Sadržaj:

Bežični senzor vrata - ultra niske snage: 5 koraka
Bežični senzor vrata - ultra niske snage: 5 koraka

Video: Bežični senzor vrata - ultra niske snage: 5 koraka

Video: Bežični senzor vrata - ultra niske snage: 5 koraka
Video: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, Juli
Anonim
Bežični senzor vrata - ultra niske snage
Bežični senzor vrata - ultra niske snage
Bežični senzor vrata - ultra niske snage
Bežični senzor vrata - ultra niske snage
Bežični senzor vrata - ultra niske snage
Bežični senzor vrata - ultra niske snage
Bežični senzor vrata - ultra niske snage
Bežični senzor vrata - ultra niske snage

Još jedan senzor vrata !! Motivacija za stvaranje ovog senzora bila mi je ta što su mnogi koje sam vidio na internetu imali jedno ili drugo ograničenje. Neki od ciljeva senzora za mene su:

1. Senzor bi trebao biti vrlo brz - po mogućnosti manje od 5 sekundi

2. Senzor bi trebao raditi na 3,7 V Li-ion bateriji jer ih imam na desetine

3. Senzor bi trebao raditi više mjeseci sa jednim punjenjem baterije. Trebalo bi potrošiti <10uA u načinu mirovanja

4. Senzor bi trebao biti u stanju da se probudi radi prenošenja kritičnih podataka, poput statusa baterije, čak i kada se vrata ne koriste duže vrijeme.

5. Senzor bi trebao prenositi podatke na MQTT temu kada su vrata otvorena, kao i kada su vrata zatvorena

6. Senzor bi trebao trošiti istu količinu energije bez obzira na stanje vrata

Rad senzora:

Senzor ima 2 glavna kontrolera. Prvi je maleni mikro kontroler ATiny 13A. Drugi je ESP koji je obično u stanju mirovanja i budi se samo kada ATiny to omogući. Cijeli krug također može napraviti samo ESP koristeći ga u stanju mirovanja, ali struja koju troši daleko je veća nego što je potrebno da baterija traje mjesecima pa ATTiny dolazi u pomoć. Služi samo u svrhu buđenja svakih N sekundi, traženja događaja na vratima ili pregleda zdravstvenog stanja, ako postoji, drži CH_PD pin ESP -a na HIGH i šalje odgovarajući signal vrste događaja ESP -u. Tu njegova uloga prestaje.

ESP tada preuzima, čita vrstu signala, povezuje se na WiFi/MQTT, objavljuje potrebne poruke, uključujući nivo napunjenosti baterije, a zatim se isključuje vraćanjem EN pina nazad na LOW.

Korištenjem ovih čipova na ovaj način iskorištavam nisku struju mirovanja ATtiny -a i nultu struju praznog hoda ESP -a kada je čip onemogućen preko CH_PD pina.

Supplies

Prije zahtjeva:

- Poznavanje programiranja ATTiny & ESP 01

- Poznavanje lemljenja komponenti na PCB -u

ESP-01 (ili bilo koji ESP)

ATTiny 13A - AVR

LDO 7333 -A - Regulator napona sa niskim ispadanjem

Otpornici - 1K, 10K, 3K3

Kondenzatori: 100uF, 0,1 uF

Prekidač na dugme, mikro prekidač za uključivanje/isključivanje - (oba opcionalno)

Dioda - IN4148 (ili bilo koji ekvivalent)

Li-ion baterija

Reed Switch

Slučaj za sve to

Lemljenje, PCB itd

Korak 1: Sheme i izvorni kod

Sheme i izvorni kod
Sheme i izvorni kod

Sheme su prikazane na priloženom dijagramu.

Uključio sam M kanalni P -kanalni kanal za zaštitu od obrnutog polariteta. Ako vam ovo ne treba, možete ga izostaviti. Bilo koji M kanalni MOSFET sa P kanalom sa niskim Rds UKLJUČENIM će poslužiti.

Trenutno ESP nema mogućnosti OTA -e, ali to je za buduća poboljšanja.

Izvorni kod senzor pametnih vrata

Korak 2: Rad kola

ATTiny Radni tok

Magija se događa u tome kako ATTiny prati položaj prekidača na vratima.

Uobičajena opcija bila bi da na prekidač priključite otpornik za podizanje i nastavite pratiti njegovo stanje. Ovo ima lošu stranu konstantne struje koju troši otpornik za podizanje. Način na koji je to ovdje izbjegnuto je taj što sam za praćenje prekidača koristio dvije pinove, a ne jednu. Ovdje sam koristio PB3 i PB4. PB3 je definiran kao ulaz, a PB4 kao izlaz s unutarnjim INPUT_PULLUP na PB3. Obično se PB4 drži VISOKO kada je ATtiny u stanju mirovanja. To osigurava da nema protoka struje kroz ulazni otpornik za podizanje bez obzira na položaj trska. tj. Ako je sklopka zatvorena, oba PB3 i PB4 su VISOKA pa između njih ne protiče struja. Ako je prekidač otvoren, nema puta između njih, pa je struja nula. Kada se ATtiny probudi, on piše NISKO na PB4, a zatim provjerava stanje PB3. Ako je PB3 VISOK, trska je OTVORENA, inače je ZATVORENA. Zatim upisuje HIGH na PB4.

Komunikacija između ATtiny & ESP -a odvija se putem dva pina PB1 / PB2 spojena na Tx / RX ESP -a. Signal sam definirao kao

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (zdravstveni pregled)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSOR_ZATVOREN

1 1 ====== NEKORIŠĆENO

Osim slanja signala ESP -u, on šalje i VISOKI impuls na PB0 koji je spojen na ESP CH_PD pin. Ovo budi ESP. Prva stvar koju ESP čini je da zadrži GPIO0 HIGH koji je spojen na CH_PD i na taj način osigurava povećanje snage čak i ako ATTiny oduzme PB0 HIGH. Kontrola je sada na ESP -u kako bi se utvrdilo kada se želi isključiti.

Zatim se povezuje na WiFi, MQTT, objavljuje poruku i isključuje se pišući LOW na GPIO0.

ESP 01 Radni tok:

ESP tok je ravno napred. Probudi se i pročita vrijednosti Tx/Rx pinova kako bi odredio koji tip poruke treba poslati. Povezuje se na WiFi i MQTT, postavlja poruku i isključuje se.

Prije isključivanja, ponovo provjerava vrijednosti ulaznih pinova da vidi jesu li se promijenile od zadnjeg čitanja. Ovo služi za brzo otvaranje i zatvaranje vrata. Ako nemate ovaj ček, u nekim slučajevima možete propustiti zatvaranje vrata ako se zatvore unutar 5-6 sekundi od otvaranja. Praktičan scenarij otvaranja i zatvaranja vrata u roku od 2 sekunde dobro je obuhvaćen while petljom koja nastavlja slati poruke sve dok se trenutno stanje vrata razlikuje od prethodnog. Jedini scenarij koji bi mogao propustiti da zabilježi sve događaje otvaranja/zatvaranja je kada se vrata više puta otvaraju/zatvaraju unutar prozora od 4-5 sekundi, što je vrlo malo vjerojatan slučaj - vjerovatno slučaj da se neko dijete igra sa vratima.

Korak 3: Provjera zdravlja

Trebao mi je i način da dobijem poruku o zdravstvenoj provjeri od ESP -a gdje šalje nivo napunjenosti ESP -a, kao i da osiguram da senzor radi dobro bez ručnog pregleda. U tu svrhu ATTiny šalje WAKE_UP signal svakih 12 sati. Može se konfigurirati putem varijable WAKEUP_COUNT u ATtiny kodu. Ovo je vrlo korisno za vrata ili prozore koji se rijetko otvaraju, pa možda nećete saznati je li ikada u redu sa senzorom ili njegovom baterijom.

U slučaju da vam ne treba funkcija provjere zdravlja, tada nije potreban cijeli koncept korištenja ATTiny -a. U tom slučaju možete pronaći druge dizajne koje su ljudi stvorili gdje se napajanje ESP -om napaja preko MOSFET -a, pa možete postići nulto strujno napajanje kada vrata ne rade. Postoje i druge stvari o kojima treba voditi računa, poput trenutnog izvlačenja da bude isto u položaju otvorenih vrata i zatvaranja vrata - za to sam negdje vidio dizajn koji je koristio trskasti prekidač sa 3 stanja umjesto uobičajenog 2 stanja.

Korak 4: Mjerenje energije i vijek trajanja baterije

Izmjerio sam trenutnu potrošnju kruga i potrebno joj je ~ 30uA za vrijeme spavanja i okolo. Gledajući tehničke tablice ATTiny-a, to bi trebalo biti oko 1-4 uA za cijelo kolo uključujući struju mirovanja LDO-a, ali tada moja mjerenja pokazuju 30. MOSFET i LDO troše beznačajnu struju.

Tako bi baterija od 800 mAH trebala trajati dugo vremena. Nemam tačnu statistiku, ali koristim je na 2 svoja vrata već više od godinu dana i svaka ćelija 18650 sa oko 800mAH u njima traje oko 5-6 mjeseci na mojim glavnim vratima koja se otvaraju i zatvaraju u najmanje 30 puta dnevno. Ona na krovnim vratima koja se otvaraju samo nekoliko puta sedmično, traje 7-8 mjeseci.

Korak 5: Buduća poboljšanja

1. ESP ne priznaje isporuku MQTT poruke. Program se može poboljšati pretplatom na temu u kojoj se objavljuje poruka za potvrdu isporuke ili se može koristiti Async MQTT biblioteka za postavljanje poruke s QoS 1.

2. OTA ažuriranje: ESP kôd se može modifikovati tako da čita MQTT temu radi ažuriranja i tako ući u OTA režim za prijem datoteke.

3. ESP01 se može zamijeniti sa ESP-12 kako bi se dobio pristup većem broju ulaznih PIN-ova i tako se na njega može priključiti više senzora. U tom slučaju komunikacija putem 2 -bitne metode nije moguća. Ovo se tada može poboljšati za implementaciju I2C komunikacije između ATtiny & ESP. Ovo je malo komplicirano, ali izvedivo. Radim na drugom postavljenom mjestu gdje ATTiny šalje vrijednosti rotacijskog kodera ESP -u preko I2C linije.

4. Strujni krug prati unutarnji Vcc ESP -a. Ako koristimo ESP12, tada se to može promijeniti tako da očitava stvarni nivo baterije preko ADC pina.

5. U budućnosti ću objaviti i modifikaciju koja se može koristiti kao samostalni senzor bez potrebe za MQTT -om ili bilo kojim sistemom kućne automatizacije. Senzor će raditi samostalno i može obaviti telefonski poziv kada se aktivira - naravno da mu je za to potrebna internetska veza.

6. I lista se nastavlja…

7. Obrnuta zaštita baterije - GOTOVO (Stvarne slike uređaja su stare i ne odražavaju MOSFET)

Preporučuje se: