İçindekiler:

Ev Otomasyonu Entegrasyonu, WiFi ve ESP-NOW ile Pille Çalışan Kapı Sensörü: 5 Adım (Resimlerle)
Ev Otomasyonu Entegrasyonu, WiFi ve ESP-NOW ile Pille Çalışan Kapı Sensörü: 5 Adım (Resimlerle)

Video: Ev Otomasyonu Entegrasyonu, WiFi ve ESP-NOW ile Pille Çalışan Kapı Sensörü: 5 Adım (Resimlerle)

Video: Ev Otomasyonu Entegrasyonu, WiFi ve ESP-NOW ile Pille Çalışan Kapı Sensörü: 5 Adım (Resimlerle)
Video: Akıllı Ev Wifi Kapı ve Pencere Sensörü | Kablosuz Kapı Pencere Manyetik Sensör - Cuppon Smart 2024, Temmuz
Anonim
Image
Image

Bu talimatta size ev otomasyon entegrasyonu ile pille çalışan bir kapı sensörünü nasıl yaptığımı gösteriyorum. Başka güzel sensörler ve alarm sistemleri gördüm ama kendim yapmak istedim.

Benim hedeflerim:

  • Kapının hızlı açılmasını algılayan ve bildiren bir sensör (<5 saniye)
  • Kapının kapandığını algılayan bir sensör
  • Pille çalışan ve pille birkaç ay çalışan sensör

Donanım ve yazılımdan ilham alınmıştır.

  • Kevin Darrah'ın trigboard'u (TPL5111 ve TPS73733).
  • Bu video

Ön kapım ve arka kapım için bir sensör yaptım. Tek fark, led konumu ve harici güç anahtarıdır (arka kapı sensöründe).

Donanım ve yazılım geliştirme sırasında birkaç iyileştirme yaptım, fotoğraflarda görülebilir.

Gereçler

Elektronik bileşenleri Aliexpress'ten aldım, ana parçalar:

  • LiPo pil
  • TPS73733 LDO
  • TPL5111
  • Manyetik anahtar
  • P-kanalı mosfet: IRLML6401TRPBF
  • Mıknatıs
  • SMD bileşenleri ve diğerleri için PCB adaptör plakası.

Adım 1: Donanım - Devre

Donanım - Devre
Donanım - Devre
Donanım - Devre
Donanım - Devre
Donanım - Devre
Donanım - Devre

Devre için ekteki şemalara bakın. SMD parçalarını bir adaptör PCB plakasına lehimledim ve tüm bileşenleri çift taraflı bir perf kartına lehimledim. ESP-01'i dişi başlıklar aracılığıyla bağladım, böylece bu Talimatın 3. adımında gösterilen adaptör aracılığıyla programlamak için kaldırabildim.

Devre şu şekilde çalışır:

  • Kapı açıldığında, TPL5111 DELAY/M_DRV pininde bir atış alır ve ESP-01'e güç sağlayan TPS73733 LDO'yu etkinleştirir. Bu işlem için EN/ONE_SHOT aşağı çekilmelidir, TPL5111'in veri sayfasına bakın.
  • Program çalıştıktan sonra (Yazılım adımına bakın), ESP-01, TPL5111'e bir Bitti sinyali gönderir ve ardından TPS73733'ü devre dışı bırakır ve bu da TPL5111 ve TPS73733 için çok düşük bir güç durumuna neden olur.

Hem NO hem de NC bağlantılı kamış anahtarları kullanıyorum. NC kablosunu bağladım, çünkü manyetik anahtarın mıknatıs çıkarıldığında devreyi kapatması (kapı açık) ve mıknatıs yakınken (kapı kapalı) açması gerekir.

Arka kapı sensörü için bazı kararsızlıkları keşfettiğimde bazı kondansatörler ve dirençler ekledim, ancak daha sonra keşfettiğim gibi kararsızlığa yazılım (esp_now_init) neden oldu.

2. Adım: Donanım - Muhafaza

Donanım - Muhafaza
Donanım - Muhafaza
Donanım - Muhafaza
Donanım - Muhafaza
Donanım - Muhafaza
Donanım - Muhafaza

Muhafazayı, "İsviçre aksanlı adam"ın bu videodan esinlenerek Autodesk Fusion360'ta tasarladım.

Üç bölümün STL dosyaları:

  • Kutu
  • kapak
  • Mıknatıs tutucu

Thingiverse sayfamda yayınlandı.

3. Adım: Yazılım

Yazılım
Yazılım

Program Github'umda.

Programın akışı resimde gösterilmiştir. ESP-NOW'u nasıl kullandığımın açıklaması için diğer Eğitilebilir Tabloma bakın.

Modül açıldığında ilk olarak ESP-NOW üzerinden 'OPEN' mesajını göndermeye çalışır. Bu başarılı olmazsa, bir WiFi ve MQTT bağlantısına geçer.

En azından benim kurulumumda 'KAPALI' mesajının ESP-NOW üzerinden başarılı bir şekilde gönderilmediğini öğrendim, bu yüzden bunu programdan kaldırdım ve sadece WiFi ve MQTT kullandım.

Kapının açıldığı ve modülün kapının kapanmasını beklediği süre boyunca, bu süreyi WiFi ve MQTT'ye bağlanmak için kullanır, bu nedenle kapı kapandığında sadece ölçülen voltajı ve bir KAPALI mesajını göndermesi ve ardından bir KAPALI mesajı göndermesi yeterlidir. direkt uykuya geçer.

Program, kapatılan mesajın alıcı tarafından doğru konuda bir MQTT mesajını dinleyerek alıp almadığını kontrol eder.

4. Adım: Ev Otomasyonu ve Telgraf

Ev Otomasyonu ve Telgraf
Ev Otomasyonu ve Telgraf
Ev Otomasyonu ve Telgraf
Ev Otomasyonu ve Telgraf
Ev Otomasyonu ve Telgraf
Ev Otomasyonu ve Telgraf

Kapı sensörlerim, Raspberry Pi Zero'mdaki Openhab Ev Otomasyonum ile iletişim kuruyor.

Ana uygulamalar:

  • Kapının durumunu okuyun: AÇIK veya KAPALI.
  • Bir kapı açılırsa beni telgrafla uyar (Alarm açılırsa veya İzleme işlevi açılırsa).
  • Bir kapının en son ne zaman açıldığını veya kapatıldığını okuyun.
  • Pil bitmeden önce bir kapı sensörünün kaldırabileceği açıklıkların sayısını sayın.

Örneğin tatildeyken komşumuz gelip bitkileri sulasa bir mesaj alıyorum. Girişteki videoya bakın.

Openhab öğelerim, kurallarım ve site haritası dosyalarım Github'ımda. Bu dosyalarda, kilit açıklığında bir 3D yazıcıdan normal bir kablolu anahtar ve küçük bir kontak (uç) anahtarı kullanan kulübenin kapı sensörümü de görebilirsiniz (resimlere bakın).

Openhab'da Telegram eyleminin nasıl kullanılacağı burada açıklanmaktadır.

Adım 5: İyileştirmeler ve Diğer İyileştirmeler

İyileştirmeler ve Diğer İyileştirmeler
İyileştirmeler ve Diğer İyileştirmeler
İyileştirmeler ve Diğer İyileştirmeler
İyileştirmeler ve Diğer İyileştirmeler

Geçtiğimiz aylarda aşağıdaki iyileştirmeyi yaptım.

Kendinden geçişli bir darbe sinyali ile uzun kapı açıklıklarının üstesinden gelin

Yazın evdeyken arka kapıyı birkaç saat açık bırakırız. WiFi bağlantısıyla çalışan ESP-01, pili gereksiz yere boşaltacaktır. Bu nedenle, bu durumlarda modülü kapatabilmek için bir açma/kapama anahtarı ekledim.

Ancak, bu bazen kalıcı olarak kapatılmış bir modülle (açmayı unuttuğumda) ve birkaç öğleden sonra açık bir kapı ve çalışan bir modülden sonra boşalmış bir pille (kapatmayı unuttuğumda) sonuçlandı.

Bu nedenle modül, önceden tanımlanmış bir süre (1 dakika) açıldıktan sonra yazılım üzerinden modülü kapatabilmek istedim.

Ancak kapı kapatıldığında ESP-01'in 'BİTTİ' darbesi TPL5111'i kapattığında, GECİKME/M_DRV pimi YÜKSEK iken TPL5111'in bir 'BİTTİ' darbesi ile kapatılmadığını öğrendim. DELAY/M_DRV pinindeki bu YÜKSEK sinyal, açılan kapı ve akü voltajına bağlı olan indükleme anahtarının NC kontağından kaynaklanmıştır.

Bu nedenle DELAY/M_DRV pinine giden sinyal sürekli YÜKSEK olmamalı, darbeli olmalıdır. TPL5111 veri sayfasında, bunun > 20 ms'lik bir darbe olması gerektiğini bulabilirsiniz. Bu kendi kendini değiştiren sinyali bir P-kanal mosfet, bir kapasitör ve 10K ve 300K direnç aracılığıyla yaptım, verilen şemaya bakın.

Aşağıdaki gibi çalışır:

  • Manyetik anahtarın NC kontağı kapalıysa, Kapı DÜŞÜK ve Mosfet AÇIK duruma getirilir, bu da modülü etkinleştiren DELAY/M_DRV pininde YÜKSEK bir sinyale neden olur.
  • Kondansatör hızla şarj olur ve bu da Geçitte artan bir voltaja neden olur.
  • Yaklaşık 20 ms sonra, Kapıdaki voltaj, YÜKSEK olan akü voltajının (300K/(300K+10K) %97'si olur ve Mosfet kapatılır, bu da DELAY/M_DRV pininde DÜŞÜK bir sinyale neden olur.
  • DELAY/M_DRV pini DÜŞÜK olduğunda, ESP-01'in DONE sinyali modülün kapanmasına neden olur.

Bu, yazılımda uygulanmaktadır; while döngüsü sadece kapının hala açık olup olmadığını kontrol etmekle kalmaz, aynı zamanda modülün çok uzun süre açık kalıp kalmadığını da kontrol eder. Çok uzun süre açık kalırsa, bir NULL değeri yayınlar (kapının tanımsız durumu). Bu durumda kapının açılıp kapanmadığını bilmiyorum ve girişte belirtilen tüm hedeflere ulaşamıyorum, ancak pil ömrü daha önemli ve çoğu zaman o gün daha sonra kapıyı tekrar açıyoruz ve bu da onaylanmış bir kapalı durumla sonuçlanıyor. kapının.

Burada kullanılan voltaj aralığına uygun bir P-kanallı Mosfet kullanılması önemlidir. Mosfet, yaklaşık - 3.8V'luk bir VGS'de tamamen açık ve yaklaşık -0.2 V'luk bir VGS'de tamamen kapalı olmalıdır. Birkaç Mosfet denedim ve bir IRLML6401TRPBF'nin 10K ve 300K dirençlerle birlikte bu amaç için iyi çalıştığını öğrendim.. 1 uF'lik bir kapasitör, yaklaşık 20 ms'lik bir darbe uzunluğu elde etmek için iyi çalışır. Daha büyük bir kapasitör, TPL5111 etkinleştirildiğinden gerekli olmayan daha uzun bir darbe ile sonuçlanır. Voltajları ve darbe uzunluğunu kontrol etmek için DSO150 osiloskopumu kullandım.

Planlanan iyileştirme: OTA güncellemesi

Halihazırda mevcut yazılıma kısmen dahil edilmiş olan aşağıdaki prosedür aracılığıyla bir OTA güncellemesi eklemeyi planlıyorum

  • NodeRed'in Openhab'ı aracılığıyla, tutulan bir 'güncelleme' mesajı bir 'güncelleme konusu' yayınlıyorum.
  • Modül açık ve MQTT sunucusuna bağlıysa ve 'güncelleme konusu'na abone ise güncelleme mesajını alır.
  • Güncelleme mesajı, modülün kapanmasını engeller ve HTTPUpdateServer'ı başlatır.
  • HTTPUpdateServer web sitesi aracılığıyla yazılımı güncelleyebilirsiniz.
  • NodeRed'in Openhab'ı aracılığıyla, tutulan bir 'boş' mesajı bir 'güncelleme konusu' yayınlıyorum.

Planlanan iyileştirme: önceden tanımlanmış bir süreden sonra donanımın kapatılması

Mevcut şemada, TPL5111'in DELAY/M_DRV ve GND'si arasında 200K'lık bir direnç kullanıyorum. Bu, modülü 2 saatten fazla açar (bkz. TPL5111 veri sayfası 7.5.3.). Ancak modülün bu kadar uzun süre açık kalmasını istemiyorum çünkü pil daha sonra boşalır. Yazılım çözümü (yukarıya bakın) modülü kapatamazsa veya güncelleme mesajı istenmeden modülü güncelleme moduna geçirirse, modül uzun süre açık kalır.

Bu nedenle TPL5111'in DELAY/M_DRV ve GND'si arasında daha küçük bir direnç kullanmak daha iyidir, bu nedenle modül kısa bir süre sonra kapatılır, örneğin bir 50K direnç 7 dakikalık bir açık kalma süresi ile sonuçlanır.

Önerilen: