İçindekiler:

Kablosuz Kapı Sensörü - Ultra Düşük Güç: 5 Adım
Kablosuz Kapı Sensörü - Ultra Düşük Güç: 5 Adım

Video: Kablosuz Kapı Sensörü - Ultra Düşük Güç: 5 Adım

Video: Kablosuz Kapı Sensörü - Ultra Düşük Güç: 5 Adım
Video: Redmi yada oppo kullanıyorsan bu kodu bilmelisin 2024, Kasım
Anonim
Kablosuz Kapı Sensörü - Ultra Düşük Güç
Kablosuz Kapı Sensörü - Ultra Düşük Güç
Kablosuz Kapı Sensörü - Ultra Düşük Güç
Kablosuz Kapı Sensörü - Ultra Düşük Güç
Kablosuz Kapı Sensörü - Ultra Düşük Güç
Kablosuz Kapı Sensörü - Ultra Düşük Güç
Kablosuz Kapı Sensörü - Ultra Düşük Güç
Kablosuz Kapı Sensörü - Ultra Düşük Güç

Yine bir kapı sensörü !! Bu sensörü yaratmamdaki motivasyon, internette gördüğüm birçok kişinin bir veya diğer sınırlaması olmasıydı. Sensörün benim için hedeflerinden bazıları:

1. Sensör çok hızlı olmalıdır - tercihen 5 saniyeden az

2. Etrafta düzinelerce pil bulunduğundan, sensör 3.7V Li-ion pil ile bitmelidir.

3. Sensör, pilin tek bir şarjıyla aylarca çalışmalıdır. Uyku modunda < 10uA tüketmelidir

4. Sensör, kapı uzun süre çalıştırılmadığında bile pil durumu gibi kritik verileri iletmek için uyanabilmelidir.

5. Sensör, kapı açıldığında olduğu kadar kapı kapatıldığında da verileri bir MQTT konusuna iletmelidir.

6. Sensör, kapının durumundan bağımsız olarak aynı miktarda güç tüketmelidir.

Sensörün çalışması:

Sensörün 2 ana kontrolörü vardır. Birincisi küçük mikro denetleyici ATiny 13A. İkincisi, genellikle uyku modunda olan ve yalnızca ATiny etkinleştirdiğinde uyanan ESP'dir. Tüm devre, uyku modunda kullanılarak sadece ESP tarafından da yapılabilir, ancak tükettiği akım, bir pilin aylarca dayanması için gerekenden çok daha fazladır, bu nedenle ATTiny kurtarmaya gelir. Sadece her N saniyede bir uyanma, bir kapı olayı veya sağlık kontrolü olayı arama amacına hizmet eder, varsa ESP'nin CH_PD pinini HIGH'a tutar ve olay tipinin uygun sinyalini ESP'ye gönderir.. Rolü orada bitiyor.

ESP daha sonra devralır, sinyal tipini okur, WiFi/MQTT'ye bağlanır, pil seviyesi de dahil olmak üzere gerekli mesajları yayınlar ve ardından EN pinini DÜŞÜK konumuna getirerek kendini KAPATIR.

Bu çipleri bu şekilde kullanarak ATtiny'nin düşük uyku akımından ve çip CH_PD pini aracılığıyla devre dışı bırakıldığında ESP'nin sıfır boşta akımından yararlanıyorum.

Gereçler

Ön koşul:

- ATTiny ve ESP 01 programlama bilgisi

- PCB üzerinde lehimleme bileşenleri bilgisi

ESP-01 (veya herhangi bir ESP)

ATtiny 13A - AVR

LDO 7333-A - Düşük Kayıp voltaj regülatörü

Dirençler - 1K, 10K, 3K3

Kapasitörler: 100uF, 0.1 uF

Buton anahtarı, mikro ON/OFF anahtarı - (her ikisi de isteğe bağlı)

Diyot - IN4148 (veya herhangi bir eşdeğeri)

Li-ion Pil

Manyetik anahtar

Hepsini barındıracak bir dava

Lehim, PCB vb

Adım 1: Şemalar ve Kaynak Kodu

Şemalar ve Kaynak Kodu
Şemalar ve Kaynak Kodu

Şema ekteki şemada gösterildiği gibidir.

Ters polarite koruması için bir P Kanalı MOSFET ekledim. Buna ihtiyacınız yoksa, atlayabilirsiniz. Düşük Rds AÇIK olan herhangi bir P Kanalı MOSFET yapacaktır.

Şu anda ESP, OTA yeteneğine sahip değil, ancak bu gelecekteki iyileştirme için.

Kaynak kodu akıllı kapı sensörü

Adım 2: Devrenin Çalışması

ATTiny Çalışma akışı

Buradaki sihir, ATTiny'nin kapı anahtarının konumunu nasıl izlediğinde gerçekleşir.

Normal seçenek, anahtara bir yukarı çekme direnci eklemek ve durumunu izlemeye devam etmek olacaktır. Bu, yukarı çekme direnci tarafından tüketilen sabit akımın dezavantajına sahiptir. Burada bundan kaçınmanın yolu, anahtarı izlemek için bir yerine iki pim kullanmamdır. Burada PB3 & PB4 kullandım. PB3, PB3 üzerinde dahili bir INPUT_PULLUP ile giriş olarak ve PB4, çıkış olarak tanımlanır. Normalde ATtiny uyku modundayken PB4 YÜKSEK tutulur. Bu, manyetik anahtarın konumundan bağımsız olarak giriş çekme direncinden akım akışı olmamasını sağlar. yani. Anahtar kapalıysa, hem PB3 hem de PB4 YÜKSEK'tir ve bu nedenle aralarında akım akmaz. Anahtar açıksa, aralarında yol yoktur ve bu nedenle akım sıfırdır. ATtiny uyandığında PB4'e bir DÜŞÜK yazar ve ardından PB3'ün durumunu kontrol eder. PB3 YÜKSEK ise manyetik anahtar AÇIK, aksi takdirde KAPALI'dır. Daha sonra PB4'e YÜKSEK bir yanıt yazar.

ATtiny ve ESP arasındaki iletişim, ESP'nin Tx/RX'ine bağlı iki pin PB1 / PB2 aracılığıyla gerçekleşir. Sinyali şu şekilde tanımladım:

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (Sağlık Kontrolü)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSÖR_KAPALI

1 1 ====== KULLANILMAMIŞ

Sinyali ESP'ye göndermenin yanı sıra, ESP CH_PD pinine bağlı olan PB0'a da YÜKSEK bir darbe gönderir. Bu, ESP'yi uyandırır. ESP'nin yaptığı ilk şey, CH_PD'ye bağlı olan GPIO0 HIGH'ı tutmak ve böylece ATTiny PB0 HIGH'ı alsa bile güçlerinin açılmasını sağlamaktır. Artık kontrol, ne zaman kapatmak istediğini belirlemek için ESP'de.

Daha sonra WiFi, MQTT'ye bağlanır, mesajı gönderir ve GPIO0'a LOW yazarak kendini kapatır.

ESP 01 Çalışma akışı:

ESP akışı düz ileri. Hangi tür mesajın gönderileceğini belirlemek için uyanır ve Tx/Rx pinlerinin değerlerini okur. WiFi ve MQTT'ye bağlanır, mesajı gönderir ve kendini kapatır.

Kapatmadan önce, son okumadan bu yana değişip değişmediklerini görmek için giriş pinlerinin değerlerini tekrar kontrol eder. Bu, kapının hızlı açılıp kapanmasını sağlamak içindir. Bu kontrole sahip değilseniz, bazı durumlarda, açıldıktan sonra 5-6 saniye içinde kapanırsa, kapının kapanmasını kaçırabilirsiniz. Kapının 2 saniye içinde açılıp kapanmasının pratik bir senaryosu, kapının mevcut durumu öncekinden farklı olduğu sürece mesajları göndermeye devam eden while döngüsü tarafından iyi bir şekilde yakalanır. Tüm açık/kapalı olaylarını kaydetmenin kaçırabileceği tek senaryo, kapının 4-5 saniyelik bir pencere içinde tekrar tekrar açılıp/kapatılmasıdır ki bu çok düşük bir ihtimaldir - muhtemelen bir çocuğun kapıyla oynaması durumu.

3. Adım: Sağlık Kontrolü

Ayrıca, sensörün manuel inceleme olmadan iyi çalıştığından emin olmak için ESP'nin pil seviyesini de gönderdiği ESP'den bir sağlık kontrol mesajı almanın bir yoluna ihtiyacım vardı. Bunun için ATTiny her 12 saatte bir WAKE_UP sinyali gönderir. ATtiny kodundaki WAKEUP_COUNT değişkeni aracılığıyla yapılandırılabilir. Bu, nadiren açılan kapılar veya pencereler için çok kullanışlıdır ve bu nedenle sensörde veya pilinde bir sorun olup olmadığını asla anlayamayabilirsiniz.

Sağlık kontrolü işlevine ihtiyacınız yoksa, ATTiny'yi kullanma konseptinin tamamı gerekli değildir. Bu durumda, ESP'ye beslemenin bir MOSFET üzerinden beslendiği, insanların yarattığı diğer tasarımları bulabilir ve böylece kapı çalıştırılmadığında sıfır akım çekişi elde edebilirsiniz. Dikkat edilmesi gereken başka şeyler de var, kapı açık ve kapı kapalı konumlarında mevcut çekişin aynı olması - bunun için bir yerde, normal 2 durum yerine 3 durumlu bir indükleme anahtarı kullanan bir tasarım gördüm.

Adım 4: Güç Ölçümleri ve Pil Ömrü

Devrenin akım tüketimini ölçtüm ve uyurken ve etrafta ~30uA alıyor. ATTiny'nin veri sayfalarına göre, LDO'nun hareketsiz akımı dahil tüm devre için yaklaşık 1-4 uA olmalıdır, ancak ölçümlerim 30'u gösteriyor. MOSFET ve LDO önemsiz akım tüketiyor.

Yani 800mAH pil uzun süre dayanmalıdır. Kesin istatistiklerim yok ama bir yıldan fazla bir süredir 2 kapımda kullanıyorum ve içinde yaklaşık 800mAH kalan her 18650 hücre, açılıp kapanan ana kapımda yaklaşık 5-6 ay dayanıyor. günde en az 30 kez. Haftada sadece birkaç kez açılan çatı kapısındaki, 7-8 ay sürer.

Adım 5: Gelecekteki İyileştirmeler

1. ESP, MQTT mesajının teslim edildiğini onaylamaz. Program, teslimatı onaylamak için mesajı yayınladığı konuya abone olarak geliştirilebilir veya QoS 1 ile mesaj göndermek için bir Async MQTT kitaplığı kullanılabilir.

2. OTA güncellemesi: ESP kodu, bir güncelleme için bir MQTT konusunu okumak ve böylece bir dosya almak için bir OTA moduna girmek üzere değiştirilebilir.

3. ESP01, daha fazla giriş PIN'ine erişmek için ESP-12 ile değiştirilebilir ve böylece aynı PIN'e daha fazla sensör eklenebilir. Bu durumda 2 bit yöntemiyle iletişim mümkün değildir. Bu daha sonra ATtiny ve ESP arasında I2C iletişimini uygulamak için geliştirilebilir. Bu biraz karmaşık ama uygulanabilir. Bir ATTiny'nin I2C hattı üzerinden ESP'ye döner kodlayıcı değerleri gönderdiği başka bir kurulumda çalışmasını sağladım.

4. Akım devresi, ESP'nin dahili Vcc'sini izler, ESP12 kullanırsak, bu, ADC pimi aracılığıyla gerçek pil seviyesini okumak için değiştirilebilir.

5. Gelecekte, bir MQTT'ye veya herhangi bir ev otomasyon sistemine ihtiyaç duymadan bağımsız bir sensör olarak kullanılabilecek bir değişiklik de yayınlayacağım. Sensör bağımsız çalışacak ve tetiklendiğinde telefon görüşmesi yapabilecek - elbette bunun için internet bağlantısına ihtiyacı var.

6. Ve liste uzayıp gidiyor…

7. Ters pil koruması - YAPILDI (Gerçek cihaz resimleri eskidir ve bu nedenle MOSFET'i yansıtmaz)

Önerilen: