Cuprins:

Senzor de ușă fără fir - Putere foarte redusă: 5 pași
Senzor de ușă fără fir - Putere foarte redusă: 5 pași

Video: Senzor de ușă fără fir - Putere foarte redusă: 5 pași

Video: Senzor de ușă fără fir - Putere foarte redusă: 5 pași
Video: Simptome de defectiune la senzorul pedalei de acceleratie! 2024, Iulie
Anonim
Senzor de ușă fără fir - Putere foarte redusă
Senzor de ușă fără fir - Putere foarte redusă
Senzor de ușă fără fir - Putere foarte redusă
Senzor de ușă fără fir - Putere foarte redusă
Senzor de ușă fără fir - Putere foarte redusă
Senzor de ușă fără fir - Putere foarte redusă
Senzor de ușă fără fir - Putere foarte redusă
Senzor de ușă fără fir - Putere foarte redusă

Încă un alt senzor de ușă !! Ei bine, motivația pentru mine de a crea acest senzor a fost că mulți pe care i-am văzut pe internet aveau o limitare sau alta. Unele dintre obiectivele senzorului pentru mine sunt:

1. Senzorul trebuie să fie foarte rapid - de preferință mai puțin de 5 sec

2. Senzorul ar trebui să ruleze o baterie Li-ion de 3,7 V, deoarece am zeci dintre ele întinse în jur

3. Senzorul ar trebui să funcționeze mai multe luni cu o singură încărcare a bateriei. Ar trebui să consume <10uA în modul de repaus

4. Senzorul ar trebui să se poată trezi pentru transmiterea datelor critice, cum ar fi starea bateriei, chiar și atunci când ușa nu este acționată mult timp.

5. Senzorul ar trebui să transmită date către un subiect MQTT atunci când ușa este deschisă, precum și când ușa este închisă

6. Senzorul ar trebui să consume aceeași cantitate de energie, indiferent de starea ușii

Funcționarea senzorului:

Senzorul are 2 regulatoare principale. Primul este micul controler ATiny 13A. Al doilea este ESP, care este de obicei în modul de repaus și se trezește numai atunci când ATiny îl permite. Întregul circuit poate fi realizat doar de către ESP, utilizându-l în modul de repaus, dar curentul pe care îl consumă este mult mai mare decât este necesar pentru ca o baterie să dureze luni, astfel încât ATTiny vine în ajutor. Acesta servește doar pentru a vă trezi la fiecare N secunde, pentru a căuta un eveniment de la ușă sau un eveniment de verificare a stării de sănătate, dacă există unul, acesta ține pinul CH_PD al ESP la HIGH și trimite semnalul corespunzător al tipului de eveniment către ESP. Rolul său se termină acolo.

ESP apoi preia, citește tipul semnalului, se conectează la WiFi / MQTT, publică mesajele necesare, inclusiv nivelul bateriei și apoi se oprește readucând pinul EN înapoi la LOW.

Folosind aceste cipuri în acest fel, profit de curentul de somn redus al ATtiny și de curentul de ralanti zero al ESP atunci când cipul este dezactivat prin pinul CH_PD.

Provizii

Precomandă:

- Cunoașterea programării unui ATTiny & ESP 01

- Cunoașterea componentelor de lipit pe un PCB

ESP-01 (sau orice ESP)

ATTiny 13A - AVR

LDO 7333-A - Regulator de tensiune scăzută

Rezistoare - 1K, 10K, 3K3

Condensatoare: 100uF, 0,1 uF

Comutator cu buton, comutator micro ON / OFF - (ambele opționale)

Diodă - IN4148 (sau orice alt echivalent)

Baterie Li-ion

Reed Switch

Un caz pentru a găzdui totul

Lipire, PCB etc.

Pasul 1: Scheme și cod sursă

Scheme și cod sursă
Scheme și cod sursă

Schema este așa cum se arată în diagrama atașată.

Am inclus un MOSFET P Channel pentru protecția inversă a polarității. Dacă nu aveți nevoie de acest lucru, îl puteți omite. Orice MOSFET cu canal P cu un RDS scăzut este activ.

În prezent, ESP nu are capacitatea OTA, dar este pentru îmbunătățiri viitoare.

Cod sursă senzor ușă inteligentă

Pasul 2: Lucrul circuitului

Flux de lucru ATTiny

Magia aici se întâmplă în modul în care ATTiny monitorizează poziția comutatorului de ușă.

Opțiunea normală ar fi să atașați un rezistor de tracțiune la comutator și să îl monitorizați în continuare. Aceasta are dezavantajul curentului constant consumat de rezistența de tragere. Modul în care acest lucru a fost evitat aici este că am folosit doi pini pentru a monitoriza comutatorul, mai degrabă decât unul. Am folosit PB3 și PB4 aici. PB3 este definit ca intrare și PB4 ca ieșire cu un INPUT_PULLUP intern pe PB3. În mod normal, PB4 este menținut HIGH când ATtiny este în modul de repaus. Acest lucru asigură că nu există curent de curent prin rezistența de tragere a intrării, indiferent de poziția comutatorului reed. adică Dacă comutatorul este închis, ambele PB3 și PB4 sunt ÎNALTE și deci nu curge curent între ele. Dacă comutatorul este deschis, atunci nu există o cale între ele și deci curentul este zero. Când ATtiny se trezește, scrie un LOW pe PB4 și apoi verifică starea PB3. Dacă PB3 este HIGH, atunci comutatorul reed este DESCHIS, altfel este ÎNCHIS. Apoi scrie înapoi un HIGH pe PB4.

Comunicarea dintre ATtiny și ESP are loc prin intermediul a doi pini PB1 / PB2 conectați la Tx / RX din ESP. Am definit semnalul ca fiind

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (Verificare de sănătate)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSOR_CLOSED

1 1 ====== NEUTILIZAT

În afară de trimiterea semnalului către ESP, acesta trimite și un impuls HIGH pe PB0 care este conectat la pinul ESP CH_PD. Acest lucru trezește ESP. Primul lucru pe care ESP îl face pentru a menține GPIO0 HIGH, care este conectat la CH_PD, asigurându-și astfel puterile, chiar dacă ATTiny ia PB0 HIGH. Controlul este acum cu ESP-ul pentru a determina când vrea să se oprească.

Apoi se conectează la WiFi, MQTT, postează mesajul și se alimentează scriind LOW pe GPIO0.

ESP 01 Flux de lucru:

Debitul ESP este direct înainte. Se trezește și citește valorile pinilor Tx / Rx pentru a determina ce tip de mesaj urmează să fie postat. Se conectează la WiFi și MQTT, postează mesajul și se oprește.

Înainte de oprire, verifică din nou valorile pinilor de intrare pentru a vedea dacă s-au schimbat de la ultima citire. Aceasta este pentru a avea grijă de deschiderea și închiderea rapidă a ușii. Dacă nu aveți această verificare, atunci este posibil să pierdeți închiderea ușii dacă aceasta este închisă în 5-6 secunde de la deschidere. Un scenariu practic al deschiderii și închiderii ușii în decurs de 2 secunde este bine surprins de bucla while care continuă să posteze mesajele atâta timp cât starea actuală a ușii este diferită de cea anterioară. Singurul scenariu pe care ar putea să-l rateze pentru a înregistra toate evenimentele de deschidere / închidere este atunci când ușa este deschisă / închisă în mod repetat într-o fereastră de 4-5 secunde, ceea ce este un caz foarte puțin probabil - probabil un caz al unui copil care se joacă cu ușa.

Pasul 3: Verificarea stării de sănătate

De asemenea, aveam nevoie de o modalitate de a primi un mesaj de verificare a stării de la ESP, unde trimite nivelul bateriei ESP, de asemenea, pentru a mă asigura că senzorul funcționează bine fără inspecție manuală. Pentru aceasta, ATTiny trimite un semnal WAKE_UP la fiecare 12 ore. Poate fi configurat prin variabila WAKEUP_COUNT din codul ATtiny. Acest lucru este foarte util pentru ușile sau ferestrele care sunt rareori deschise și, prin urmare, este posibil să nu aflați dacă ceva nu este în regulă cu senzorul sau bateria acestuia.

În cazul în care nu aveți nevoie de funcționalitatea de verificare a stării de sănătate, atunci nu este necesar întregul concept de utilizare a ATTiny. În acest caz, puteți găsi alte modele pe care oamenii le-au creat în cazul în care alimentarea către ESP este alimentată printr-un MOSFET și astfel puteți obține zero curent atunci când ușa nu este acționată. Există și alte lucruri care trebuie luate în considerare, cum ar fi desenul curent care să fie același în poziția de deschidere a ușii și de închidere a ușii - pentru asta am văzut undeva un design care folosea un întrerupător cu 3 stări în loc de 2 stări obișnuite.

Pasul 4: măsurători de putere și durata de viață a bateriei

Am măsurat consumul de curent al circuitului și durează ~ 30uA când dormi și în jur. Mergând după fișele tehnice ale ATTiny, ar trebui să fie în jur de 1-4 uA pentru întregul circuit, inclusiv curentul de repaus al LDO, dar apoi măsurătorile mele arată 30. MOSFET și LDO consumă un curent nesemnificativ.

Deci, o baterie de 800 mAH ar trebui să reziste mult timp. Nu am statistici exacte, dar îl folosesc pe 2 dintre ușile mele de mai bine de un an și fiecare celulă 18650 cu aproximativ 800mAH rămase în ele durează aproximativ 5-6 luni pe ușa mea principală care se deschide și se închide la de cel puțin 30 de ori pe zi. Cel de pe ușa acoperișului care se deschide de câteva ori într-o săptămână, durează 7-8 luni.

Pasul 5: Îmbunătățiri viitoare

1. ESP nu recunoaște livrarea mesajului MQTT. Programul poate fi îmbunătățit prin abonarea la subiectul în care publică mesajul pentru confirmarea livrării sau o bibliotecă Async MQTT poate fi utilizată pentru a posta un mesaj cu QoS 1.

2. Actualizare OTA: Codul ESP poate fi modificat pentru a citi un subiect MQTT pentru o actualizare și astfel intrați într-un mod OTA pentru a primi un fișier.

3. ESP01 poate fi înlocuit cu ESP-12 pentru a obține acces la mai multe PIN-uri de intrare și astfel poate atașa mai mulți senzori la același. În acest caz, comunicarea prin metoda pe 2 biți nu este posibilă. Acest lucru poate fi apoi îmbunătățit pentru a implementa comunicarea I2C între ATtiny și ESP. Acest lucru este un pic complicat, dar funcțional. Îl funcționez într-un alt set în care un ATTiny trimite valorile codificatorului rotativ către ESP pe linia I2C.

4. Circuitul curent monitorizează Vcc-ul intern al ESP-ului. Dacă folosim ESP12, acesta poate fi modificat pentru a citi nivelul real al bateriei prin pinul ADC.

5. În viitor, voi posta și o modificare la aceasta, care poate fi utilizată ca senzor independent, fără a fi nevoie de un MQTT sau orice alt sistem de automatizare a casei. Senzorul va funcționa independent și poate efectua un apel telefonic atunci când este declanșat - desigur, are nevoie de o conexiune la internet pentru aceasta.

6. Și lista continuă …

7. Protecție inversă a bateriei - GATA (imaginile reale ale dispozitivului sunt vechi și, prin urmare, nu reflectă MOSFET-ul)

Recomandat: