İçindekiler:

ESP-01 Derin Uykulu Hareket Sensörü: 5 Adım
ESP-01 Derin Uykulu Hareket Sensörü: 5 Adım

Video: ESP-01 Derin Uykulu Hareket Sensörü: 5 Adım

Video: ESP-01 Derin Uykulu Hareket Sensörü: 5 Adım
Video: Arduino ile Esp8266 Kullanımı - Esp-01 2024, Kasım
Anonim
Image
Image

Tetiklendiğinde e-posta mesajı gönderen ev yapımı hareket sensörleri üzerinde çalışıyorum. Bunu yapmanın birçok örnek talimatı ve başka örnekleri vardır. Yakın zamanda bunu pille çalışan bir PIR hareket sensörü ve bir ESP-01 ile yapmam gerekiyordu. ESP-01 çok işlevseldir ve gereken tüm yeteneklere sahiptir, neden gerekli minimum ve en az pahalı olanı kullanmayasınız? Karışıma, hareket sensörü tetiklendiğinde sesli uyarıyı tetikleyen ayrı ve uzak bir ESP-01 modülü eklendi.

Kod ve nihai devre düzeni, web'deki sayısız kaynaktan toplanmıştır ve bunları özellikle tanımlayabileceğimi sanmıyorum. Gmail yoluyla e-posta gönderme fikri, öğretilebilir ve diğer kaynaklardan geldi ve son kod bu kaynaklardan bir karışımdır. Çalışmak için derin bir uyku çekmek beni çoğu zaman sonuçsuz kalan birçok yola götürdü. İşin garibi, bir yol verimli olduğunda, daha fazla yol aramayı bırakırsınız. Bu yüzden başarıma katkıda bulunan ve henüz bilinmeyen herkese teşekkür ediyorum.

ESP-01 derin uykuyu tetiklemek için PIR sensörünün çalışmasını sağlamakta da aynı sorunu yaşadım. İşe yarayan bir tane olana kadar birçok yol.

Söylemeye gerek yok, bazı ilginç engeller vardı ya da belki daha alakalı, elektronikleri daha iyi anlamak için ihtiyacım vardı. Bir şey işe yarayana kadar öğrenmeye devam edersin ve sonra daha fazlasını öğrenmek zorunda kalmazsın.

ESP-01, zamanlanmış uykuya ihtiyaç duymadığınız sürece diğer ESP8266 modüllerinin yanı sıra derin uyku modunda da çalışır. Modülün belirli bir süre geçtikten sonra uyanmasını istiyorsanız, ESP-01 kullanılacak modül değildir. Ama istediğim bu değildi. Bir PIR kullanırken geçen süre anlamsızdır. ESP-01'in yalnızca PIR tarafından algılanan hareketle tetiklendiğinde uyanmasını istedim. Saatler veya günler boyunca herhangi bir hareket algılanmazsa, ESP-01 minimum pil gücü kullanarak uykuda kalır.

GPIO16 uyandırma sinyali olduğu için ESP8266 Sıfırlama'ya bağlı GPIO16 kullanan birçok devre göreceksiniz. Bu doğrudur, ancak zamanlanmış uykudan uyanma sinyalidir. ESP-01'de mevcut olmadığı için iyi olan bu PIN'i yok sayabiliriz.

Temel olarak, tek ihtiyacımız olan, ESP-01 Sıfırlama pinini tetiklemek için PIR'den sinyal almaktır. Tahmin edeceğiniz ilk zorluk, Sıfırlamanın bir DÜŞÜK sinyalde tetiklenmesi ve PIR'ın tetiklendiğinde bir YÜKSEK sinyal göndermesidir. Sıfırlamanın ayrıca YÜKSEK veya önyüklemede kayan olması gerekir. Bunu kısa tutmak için, bazı farklı devreleri denedikten sonra, önyükleme sırasında RESET pinini YÜKSEK tutmak için pull-up dirençli bir NPN transistörü kullanmaya karar verdim. PIR'den gelen çıkış minimumdur ancak transistörü açmak için yeterli taban akımı sağlar.

Aşağıdaki devre şemasında göreceğiniz gibi, ESP-01 her PIR hareketi algıladığında derin uykudan uyandırılmıştır.

Ama başka bir sorun vardı. ESP-01'in Sıfırlanması, yalnızca PIR, hareketi algılamayı durdurduktan ve transistörü kapatarak düşük bir sinyale döndükten ve çekme direnci nedeniyle Sıfırlama pimini YÜKSEK'e döndürdükten sonra gerçekleşti. Bu, PIR hareketi algılamayı durdurana kadar e-postanın gönderilmeyeceği veya sesli uyarının etkinleştirilemeyeceği anlamına gelir. Hareket algılanır algılanmaz tetiğin olmasını istedim.

Bu davranıştan benim belirlediğim şey, ESP-01'in aslında sinyalin yükselen kenarında tetiklenmesidir. Sıfırlama pimini toprağa tutmak aslında ESP-01'i derin uykudan tetiklemez, ancak voltaj YÜKSEK sinyaline yükseldiği anda sıfırlama gerçekleşir.

Bu davranışa verdiğim çok basit yanıt, PIR çıkışı ile transistör tabanı arasındaki hatta bir kapasitör eklemek oldu. Bu, transistörün yalnızca kapasitör şarj olurken açılmasına neden oldu. Şarj edildikten sonra başka akım yoktu ve transistör kapandı. 5k direnç, akımın toprağa akmasını sağlar. Bunu ESP-01 yerine bir LED ile test ettim ve kapanmadan önce LED'in yanıp söndüğünü bir saniyenin kesirinde görebiliyordum. Bu küçük darbe, Sıfırlama pimini anlık olarak toprağa çekmeye ve Sıfırlamayı derin uykudan tetiklemeye yetecek kadar uzundu.

Adım 1: ESP-01 Derin Uyku Modülü

ESP-01 Derin Uyku Modülü
ESP-01 Derin Uyku Modülü
ESP-01 Derin Uyku Modülü
ESP-01 Derin Uyku Modülü

Derin uyku modülü iki çalışma voltajı kullanır. PIR için pil takımının rastgele 5v+'ı ve ayrıca ESP-01 için 3,3 voltluk bir regülatör kartı. Ayrıca ters voltajlardan hasarlı parçaları önlemek için devreye bir diyot ekliyorum. Bu, biraz fazladan güç kullanır ve pil paketi voltajını 0,7 volt düşürür. Pil takımı uçlarını asla tersine çeviremeyeceğinizden eminseniz diyot devrenin dışında bırakılabilir. Ayrıca kolaylık olması açısından bir anahtar eklenmiştir.

Bu modül, orijinal derin olmayan uyku düzenime yapılan küçük bir güncellemedir. Derin uyku olmayan konfigürasyonda, PIR doğrudan ESP-01'in RX pinine bağlıdır. Birkaç nedenden dolayı ESP-01'in RX pinini PIR için giriş pini olarak kullanıyorum. GPIO0, önyükleme sırasında PIR çıkış PIN'inin DÜŞÜK olacağı ve ESP-01'in flaş moduna girmesine neden olacağı için çalışmadı. GPIO2 kullanmadım çünkü o zaman görsel geri besleme için yerleşik LED'i kullanamazdım. RX ve TX pinleri genellikle ekstra IO pinleri olarak tanımlanır, ancak benim deneyimim, RX'in ekstra bir GİRİŞ pini ve TX'in ekstra bir ÇIKIŞ pini olmasıdır.

Derin uyku konfigürasyonunda, RX bağlantısı kesinlikle gerekli değildir. Sadece giriş YÜKSEK iken LED'i açarak PIR'nin ne kadar süreyle tetiklendiğini izlemek için kullanıyorum. Daha önce de belirtildiği gibi, döngü işlevini silerseniz ve yalnızca kurulum rutinini kullanırsanız, RX bağlantısı gereksizdir.

ESP-01 derin uyku modülünün parça listesi:

1 - 5 x 7 cm PCB Prototip Kartı

1 - 2 pinli konnektör

2 - 1 x 3 dişi başlık

1 - AMS1117 - 3.3 voltaj regülatörü devre kartı

1 - 1 x 3 Sağ Açı Erkek başlık pimi

1 - 1 x 3 dişi soket başlık pimi

1 - 1 x 4 dişi soket başlık pimi

1 - 2 x 4 dişi başlık

1 - 1uf kapasitör

1 - HC-SR501 PIR Hareket Sensörü

1 - 2N2222 Transistör

1 - 10k Direnç

1 - 4.7k Direnç

1 - 1k Direnç

1 - 1N4148 diyot

1 - SS12D00G4 SPDT'yi değiştirin

1 - ESP-01

1 - 4AA Pil Paketi

Lütfen videoda devre kartının 2 x 4 başlık yerine bir ESP-01 devre kartı adaptörü kullandığını unutmayın. Bu adaptörün lehimlenmesi daha kolay olsa da 2 x 4 başlık iyi çalışıyor ve aslında daha iyi uyuyor.

2. Adım: ESP-01 Derin Uyku Kodu

Derin Uyku kodu iki işlevi yerine getirir. Bir e-posta mesajı gönderin (varsayılan olarak gmail aracılığıyla) ve sesli uyarıyı tetiklemek için ilgili ESP-01 sesli uyarı modülüne bir http web isteği gönderin.

Bu modül tetiklendiğinde iki bildirim seçeneği sunar ve özellikle e-posta mesajlarına dikkat etmediğinizde faydalı olabilir.

Çizimin çalışması için altı satırlık kodunuzu belirli değerlerinizle güncellemeniz gerekecek:

const karakter* ssid = "xxxxx"; // WiFi SSIDconst char* şifreniz = "xxxxx"; // WiFi Parolanız Dize Senders_Login = "xxxxx"; // e-posta sağlayıcınız oturum açma String Senders_Password = "xxxxx"; // e-posta sağlayıcı şifreniz

Kime = "xxxxxx"; Gönderen = "xxxxxx"; // Gmail genellikle bunun Senders_Login ile aynı olmasını tercih eder ve bunun yerine geçebilir

PIR sensörü tetik olayının uzunluğu için 10 saniyenin altına ayarlandığında derin uyku modülünün öngörülemez bir şekilde çalıştığını gördüm. Benimkini 20 saniyeye ayarladım. Bunun çok güvenilir olduğu kanıtlanmıştır, ancak aynı zamanda tetikleyici olayların bu sıklıkta gerçekleşebileceği anlamına da gelir.

Ayrıca, PIR hala hareket algıladığı sürece ESP-01 ledini açık tutmak için döngü işlevine kod ekledim. Döngü işlevindeki tüm kodlar kaldırılabilir ve derin uyku çağrısı kurulum işlevinin sonuna taşınabilir.

ESP-01 modülü ile aktivitenin görsel göstergesi için yanıp sönme işlevini kullanıyorum.

Gmail ile bağlantıyı kullanıp test etsem de, diğer e-posta sağlayıcıları da çalışıyor. Bir çift denedim. Aslında, gmail'i daha zahmetli buldum. Gmail, hesabınızın daha az güvenli uygulamalar tarafından erişim için yapılandırılmasını gerektirir. Bu hesap ayarı varsayılan olarak KAPALI'dır, bu yüzden onu bulduğunuzdan ve daha az güvenli olarak değiştirdiğinizden emin olun. Gmail başka türlü ÇALIŞMAZ.

Birden fazla buzzer modülüne sahip olmayı seçerseniz, sadece http istemcisinin fazladan çağrılarını ekleyin (üç satırlık kodu tekrarlayın, ancak kullanılan ip adresini değiştirin ve ayrıca httpCode değişkenini yalnızca bir kez int olarak tanımlayın!

Bu modülde buzzerın ip adresinin sabit kodlanmış olduğuna dikkat edin. Seçtiğim ip adresini kullanmak zorunda değilsiniz ancak bu modüldeki web aramasının ip adresini bir sonraki modüldeki web sunucusu kurulumunun ip adresi ile eşleştirmeniz gerekiyor.

Adım 3: ESP-01 Buzzer Modülü

ESP-01 Buzzer Modülü
ESP-01 Buzzer Modülü
ESP-01 Buzzer Modülü
ESP-01 Buzzer Modülü
ESP-01 Buzzer Modülü
ESP-01 Buzzer Modülü

Buzzer modülünün oldukça basit bir kurulumu vardır. Pil takımı yerine bir USB konektörü kullanıyor çünkü bu modülün bir pil takımı için uygun olduğunu düşünmüyorum. Bir web isteğinin ne zaman yapılacağını asla bilemediği için her zaman açık ve ağ/wifi bağlı olmalıdır. Bu, pil paketlerinin kullanışlı olduğundan daha fazla sürekli güç gerektirir.

Buzzer modülleri, nerede olursanız olun, bir hareket sensörü tetikleme olayının bildirimini sağlayan birden fazla konuma uygun bir şekilde yerleştirilebilir!

Buzzer, USB konektörünün 5v'sine bağlıdır ve ESP-01'e güç sağlayan başka bir 3.3v regülatör kartı vardır.

Buzzer modülü, çıkış için TX, GPIO0 veya GPIO2 kullanarak çalışacaktır. Yapılandırmamda GPIO0 kullanıyorum. (Modülün resminde kablo GPIO2'ye bağlı ama o zamandan beri onu taşıdım.) GPIO0 derin uyku modülü için (GİRİŞ olarak) çalışmasa da, bu düzen ile ÇIKIŞ olarak iyi çalışıyor. Önyüklemede yere çekilmez, bu da sorunlara neden olur. GPIO2 kullandım ancak daha sonra herhangi bir geri bildirim için yerleşik LED'i kullanamadım ancak ÇIKIŞ için GPIO0 kullanarak yerleşik LED'i kullanabilirim.

ESP-01, GPIO0 pimine YÜKSEK bir sinyal verdiğinde devredeki sesli uyarıcıyı çalıştırmak için bir NPN transistörü kullanmayı denedim, ancak sonuçlar çok tutarsızdı. Zil, çok az güçle bile her zaman çalmak istiyor gibiydi. Bunun yerine bir N kanal MOSFET (2n7000) kullandım ve sonuç müthiş oldu. IO pini Gate'i gerektiği gibi çalıştırır.

USB konektörü Vcc(+) ve Gnd(-)'den sadece iki pime ihtiyacımız varken, USB'yi regülatöre bağlamadan önce ekstra stabilite ve lehimleme için PCB kartına bağlanmak için 5 pimli bir başlık kullanıyorum. 3.3v regülatör kartım, önceden takılmış pimlerle ve aklımda baş aşağı olarak geldi. Yani regülatörü header pinlerine yerleştirmek için devre kartının gizlendiğini ancak bundan daha kötüsü regülatör üzerindeki vcc ve gnd'nin USB konnektöründeki vcc ve gnd'den ters olduğunu görebilirsiniz. Böylece teller çaprazlanır.

Ayrıca aktif zil için + gücün USB'nin 5v'sinden geldiğini unutmayın. Ayrıca 4 pin dişi soket başlığı, zilin pin yerleşimi ile güzel bir şekilde çalışır.

ESP-01 Buzzer Modülü Parça Listesi:

1 - 5 x 7 PCB Kartı

1 - pin başlıklı USB mini konektör (7 pin)

2 - 1 x 3 dişi başlık

1 - AMS1117-3.3 v voltaj regülatör kartı

1 - 2 x 4 dişi başlık

2 - 1 x 4 dişi soket başlığı

1 - 2N7000 N-kanal MOSFET

1 - 10 ohm direnç

1 - 5v Aktif Buzzer

Adım 4: ESP-01 Buzzer Modül Kodu

Buzzer modülü, basit bir ESP-01 web sunucusu görevi görür. Bir kök isteğine basit bir mesajla yanıt verir ve buzz isteğini aldığında buzzer'ı tetikler. GPIO0, buzzer sinyali için GPIO pini için kullanılır.

ESP-01'in sabit kodlanmış bir ip adresi ile yapılandırıldığını unutmayın. Bu, derin uyku modülünün buzzer adresine bağlanması için gereklidir.

Önceki modülde olduğu gibi, iki satırlık kodu kendi özel değerlerinizle güncellemeniz gerekecek:

//WiFi yönlendiricinizin SSID ve Parolasıconst char* ssid = "xxxxxxx";

const char* şifre = "xxxxxxxx";

Birden fazla buzzer modülünüz varsa, her biri kendi benzersiz ip adresiyle yüklenmelidir.

Farklı zil melodileri üreten farklı vızıltı yöntemleri de ekleyebilirsiniz. Örneğin, ön kapıda ve arka kapıda bir PIR sensörünüz varsa, her biri buzzer modüllerinizin her birine bir web isteği yapabilir, ancak bir sensörün buzz'ı çağıran bir çizimi olabilir ve diğer çizim buzz2'yi çağırabilir. böylece hangi sensörün tetiklendiğini sesten anlayabilirsiniz. Ve benzeri vb! Buzz2 işlevi mevcut değil, sadece buzz işlevini kopyalayın ve gecikme değerlerini değiştirin.

Web sunucusu için aşağıdaki gibi bir kod satırı eklemeniz yeterlidir:

server.on("/buzz2", buzz2);

Adım 5: Son Düşünceler

Bu benim ilk dersim, bu yüzden dahil etmem gereken bazı pratik şeyleri kaçırmış olabilirim. Kullandığım AMS1117-3.3 regülatör kartı, açıldığında yanan küçük bir led içeriyor. Derin uyku modülü için bunun yanmasını ve gereksiz yere gücü boşaltmasını istemedim. Bu yüzden tahtadaki ledin bir tarafında yapabildiklerimi lehimledim ve ardından iz çizgisini kesmek için maket bıçağı kullandım. Bu düşündüğümden daha kolay oldu ve LED'in yanmasını engelliyor. ESP-01 derin uykudayken güç çekişinin ne olduğunu belirleyemedim ama birkaç hafta içinde bir cevabım olabilir. Bir meslektaşım sensörü çalıştırıyordu (derin uykuda değil) ve yaklaşık bir hafta içinde pillerin boşaldığını (5AA) buldu. Bence bu kurulum bir ay veya daha fazlasını vermeli. göreceğiz.

Derin uyku modülünün maliyeti yaklaşık 8 ABD doları CDN (piller dahil değildir!) ve sesli uyarı modülü 5 ABD dolarıdır.

Önerilen: