Sadržaj:

Bežični senzor vrata - ultra niska snaga: 5 koraka
Bežični senzor vrata - ultra niska snaga: 5 koraka

Video: Bežični senzor vrata - ultra niska snaga: 5 koraka

Video: Bežični senzor vrata - ultra niska snaga: 5 koraka
Video: Тест каравана в -25° . Ночёвка зимой. Как не замёрзнуть? 2024, Srpanj
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 desetke

3. Senzor bi trebao raditi više mjeseci s jednim punjenjem baterije. U stanju mirovanja trebao bi potrošiti <10uA

4. Senzor bi se trebao probuditi radi prijenosa kritičnih podataka, poput stanja baterije, čak i ako se vratima ne upravlja dulje vrijeme.

5. Senzor bi trebao prenositi podatke na temu MQTT kad 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 regulatora. Prvi je maleni mikro kontroler ATiny 13A. Drugi je ESP koji je obično u stanju mirovanja i budi se samo kad 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 ga ima, 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 razinu baterije, a zatim se isključuje vraćanjem EN pina natrag na LOW.

Korištenjem ovih čipova na ovaj način iskorištavam nisku struju mirovanja ATtinyja i nultu struju u praznom hodu ESP -a kada je čip onemogućen putem CH_PD pina.

Pribor

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 s niskim ispadanjem

Otpornici - 1K, 10K, 3K3

Kondenzatori: 100uF, 0,1 uF

Prekidač s prekidačem, mikro prekidač za uključivanje/isključivanje - (oboje opcionalno)

Dioda - IN4148 (ili bilo koji ekvivalent)

Li-ion baterija

Reed prekidač

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 s P kanalom s uključenim niskim Rds.

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

Izvorni kod senzor pametnih vrata

Korak 2: Rad kruga

ATTiny Radni tok

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

Uobičajena opcija bila bi da na prekidač priključite otpornik za podizanje i nastavite pratiti njegovo stanje. To 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 otpor 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. Kad 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 (zdravstvena provjera)

0 1 ====== SENSOR_OPEN

1 0 ====== OSJETNIK_ZATVOREN

1 1 ====== NEKORIŠTENO

Osim slanja signala ESP -u, on šalje i VISOKI impuls na PB0 koji je spojen na ESP CH_PD pin. Ovo budi ESP. Prvo što ESP čini radi držanja GPIO0 HIGH -a koji je spojen na CH_PD čime se osigurava njegovo povećanje č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 naprijed. Probudi se i pročita vrijednosti Tx/Rx pinova kako bi odredio koju vrstu poruke treba poslati. Povezuje se na WiFi i MQTT, objavljuje poruku i isključuje se.

Prije isključivanja, ponovno provjerava vrijednosti ulaznih pinova da vidi jesu li se promijenile od zadnjeg čitanja. To se odnosi na 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čni scenarij otvaranja i zatvaranja vrata u roku od 2 sekunde dobro je obuhvaćen while petljom koja nastavlja slati poruke sve dok je trenutno stanje vrata različito od prethodnog. Jedini scenarij koji bi mogao propustiti snimiti sve događaje otvaranja/zatvaranja je kada se vrata opetovano otvaraju/zatvaraju unutar prozora od 4-5 sekundi, što je vrlo malo vjerojatan slučaj - vjerojatno slučaj da se neko dijete igra s vratima.

Korak 3: Provjera zdravlja

Trebao mi je i način da dobijem poruku o zdravstvenoj provjeri od ESP -a gdje šalje razinu 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 nešto u redu sa senzorom ili baterijom.

U slučaju da vam ne treba funkcionalnost provjere zdravlja, cijeli koncept korištenja ATTiny -a nije potreban. U tom slučaju možete pronaći i druge dizajne koje su ljudi stvorili gdje se opskrba ESP -om napaja putem MOSFET -a, pa možete postići nulto strujno napajanje kada vrata ne rade. Postoje i druge stvari na koje treba paziti, poput trenutnog izvlačenja da bude isto u otvorenim vratima i u poziciji zatvaranja vrata - za to sam negdje vidio dizajn koji je koristio trskasti prekidač s 3 stanja umjesto uobičajenog 2 stanja.

Korak 4: Mjerenje snage i vijek trajanja baterije

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

Dakle, baterija od 800 mAH trebala bi trajati dugo. Nemam točnu statistiku, ali koristim je na 2 svoja vrata već više od godinu dana i svaka ćelija 18650 s 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 u tjednu, traje 7-8 mjeseci.

Korak 5: Buduća poboljšanja

1. ESP ne potvrđuje 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 knjižnica za postavljanje poruke s QoS 1.

2. OTA ažuriranje: ESP kôd se može izmijeniti tako da čita temu o MQTT -u radi ažuriranja i tako ući u OTA način za primanje datoteke.

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

4. Strujni krug prati unutarnji Vcc ESP -a. Ako koristimo ESP12, tada se to može izmijeniti kako bi se očitala stvarna razina baterije preko ADC pina.

5. U budućnosti ću također objaviti izmjenu koja se može koristiti kao samostalni senzor bez potrebe za MQTT -om ili bilo kojim sustavom 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 popis se nastavlja…

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

Preporučeni: