Turinys:

Belaidis durų jutiklis - ypač maža galia: 5 žingsniai
Belaidis durų jutiklis - ypač maža galia: 5 žingsniai

Video: Belaidis durų jutiklis - ypač maža galia: 5 žingsniai

Video: Belaidis durų jutiklis - ypač maža galia: 5 žingsniai
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Lapkritis
Anonim
Belaidis durų jutiklis - itin mažos galios
Belaidis durų jutiklis - itin mažos galios
Belaidis durų jutiklis - itin mažos galios
Belaidis durų jutiklis - itin mažos galios
Belaidis durų jutiklis - itin mažos galios
Belaidis durų jutiklis - itin mažos galios
Belaidis durų jutiklis - itin mažos galios
Belaidis durų jutiklis - itin mažos galios

Dar vienas durų jutiklis !! Na, motyvacija man sukurti šį jutiklį buvo ta, kad daugeliui, kuriuos mačiau internete, buvo vienas ar kitas apribojimas. Kai kurie jutiklio tikslai man yra šie:

1. Jutiklis turi būti labai greitas - pageidautina mažiau nei 5 sek

2. Jutiklis turėtų išsikrauti iš 3,7 V ličio jonų akumuliatoriaus, nes jų turiu dešimtis

3. Vieną kartą įkraunant akumuliatorių, jutiklis turėtų veikti daugelį mėnesių. Miego režimu jis turėtų suvartoti <10uA

4. Jutiklis turi atsibusti, kad galėtų perduoti svarbius duomenis, pvz., Akumuliatoriaus būseną, net ir tada, kai durelės ilgai neveikė.

5. Jutiklis turėtų perduoti duomenis į MQTT temą, kai durys atidaromos, taip pat uždaromos

6. Jutiklis turėtų suvartoti tiek pat energijos, nepriklausomai nuo durų būklės

Jutiklio veikimas:

Jutiklyje yra 2 pagrindiniai valdikliai. Pirmasis yra mažytis mikrovaldiklis ATiny 13A. Antrasis yra ESP, kuris paprastai yra miego režime ir atsibunda tik tada, kai „ATiny“tai įgalina. Visą grandinę taip pat gali sukurti tik ESP, naudodamas ją miego režimu, tačiau srovė, kurią ji sunaudoja, yra daug didesnė nei reikalinga, kad baterija tarnautų kelis mėnesius, todėl ATTiny ateina į pagalbą. Jis skirtas tik pabusti kas N sekundę, ieškoti durų įvykio ar sveikatos tikrinimo įvykio, jei toks yra, jis laiko ESP CH_PD kaištį HIGH ir siunčia atitinkamą įvykio tipo signalą ESP. Jo vaidmuo tuo ir baigiasi.

Tada ESP perima, nuskaito signalo tipą, prisijungia prie „WiFi“/MQTT, paskelbia reikiamus pranešimus, įskaitant akumuliatoriaus įkrovos lygį, ir tada išsijungia išjungdamas EN kaištį į LOW.

Naudodamas šiuos lustus, naudojuosi maža ATtiny miego srove ir nuline ESP tuščiosios eigos srove, kai lustas išjungiamas per CH_PD kaištį.

Prekės

Išankstinis reikalavimas:

- ATTiny & ESP 01 programavimo žinios

- Žinios apie litavimo komponentus ant PCB

ESP-01 (arba bet kuris ESP)

ATTiny 13A - AVR

LDO 7333 -A - žemo iškritimo įtampos reguliatorius

Rezistoriai - 1K, 10K, 3K3

Kondensatoriai: 100uF, 0,1 uF

Mygtukinis jungiklis, mikro ON/OFF jungiklis - (abu pasirenkami)

Diodas - IN4148 (arba bet kuris lygiavertis)

Ličio jonų baterija

Reed jungiklis

Atvejis, kur visa tai sutalpinti

Lituoklis, PCB ir kt

1 veiksmas: schemos ir šaltinio kodas

Schemos ir šaltinio kodas
Schemos ir šaltinio kodas

Schemos yra tokios, kaip parodyta pridedamoje diagramoje.

Įtraukiau P kanalo MOSFET, skirtą apsaugoti nuo atvirkštinio poliškumo. Jei jums to nereikia, galite to praleisti. Tiks bet kuris P kanalo MOSFET su žemu RDS įjungimu.

Šiuo metu ESP neturi OTA galimybių, tačiau tai yra tolesnis tobulinimas.

Šaltinio kodas išmaniųjų durų jutiklis

2 žingsnis: grandinės darbas

ATTiny Darbinis srautas

Čia stebuklas įvyksta tuo, kaip ATTiny stebi durų jungiklio padėtį.

Įprasta galimybė būtų prie jungiklio pritvirtinti ištraukiamąjį rezistorių ir nuolat stebėti jo būseną. Tai turi neigiamos įtakos nuolatinei srovei, kurią sunaudoja traukiamasis rezistorius. To čia buvo išvengta, nes jungikliui stebėti naudoju du kaiščius, o ne vieną. Čia naudoju PB3 ir PB4. PB3 yra apibrėžiamas kaip įvestis, o PB4 - kaip išvestis su vidine INPUT_PULLUP PB3. Paprastai PB4 laikomas AUKŠTAS, kai „ATtiny“yra miego režime. Tai užtikrina, kad per įvesties traukimo rezistorių nebus srovės, nepriklausomai nuo nendrinio jungiklio padėties. t.y. Jei jungiklis uždarytas, PB3 ir PB4 yra AUKŠTI, todėl tarp jų nėra srovės. Jei jungiklis yra atidarytas, tarp jų nėra kelio, todėl srovė yra lygi nuliui. Kai ATtiny atsibunda, jis parašo LOW ant PB4 ir tada patikrina PB3 būseną. Jei PB3 yra AUKŠTAS, tada nendrinis jungiklis ATIDARYTAS, kitaip jis UŽDARYTAS. Tada jis įrašo AUKŠTĄ į PB4.

Ryšys tarp ATtiny ir ESP vyksta per du kaiščius PB1 / PB2, prijungtus prie ESP Tx / RX. Signalą apibrėžiau kaip

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (sveikatos patikrinimas)

0 1 ====== SENSOR_OPEN

1 0 ====== JUTIKLIS_UŽDARYTAS

1 1 ====== NENAUDOTAS

Be to, kad siunčia signalą į ESP, jis taip pat siunčia HIGH impulsą PB0, kuris yra prijungtas prie ESP CH_PD kaiščio. Tai pažadina ESP. Pirmas dalykas, kurį ESP daro, kad palaikytų GPIO0 HIGH, kuris yra prijungtas prie CH_PD, taip užtikrinant jo galios padidėjimą, net jei ATTiny atima PB0 HIGH. Dabar valdymas atliekamas naudojant ESP, kad nustatytų, kada jis nori išjungti maitinimą.

Tada jis prisijungia prie „WiFi“, „MQTT“, paskelbia pranešimą ir išsijungia, parašydamas LOW ant GPIO0.

ESP 01 Darbo eiga:

ESP srautas yra tiesiai į priekį. Jis pažadina ir skaito „Tx/Rx“kaiščių reikšmes, kad nustatytų, kokio tipo pranešimas turi būti paskelbtas. Prisijungia prie „WiFi“ir „MQTT“, paskelbia pranešimą ir išjungia save.

Prieš išjungdama, ji dar kartą patikrina įvesties kaiščių vertes, kad pamatytų, ar jos nepasikeitė nuo paskutinio skaitymo. Tai būtina norint greitai atidaryti ir uždaryti duris. Jei neturite šio patikrinimo, kai kuriais atvejais galite praleisti durų uždarymą, jei jos uždaromos per 5-6 sekundes nuo atidarymo. Praktinį scenarijų, kai durys atidaromos ir uždaromos maždaug per 2 sekundes, gerai užfiksuoja „while“kilpa, kuri skelbia pranešimus tol, kol dabartinė durų būsena skiriasi nuo ankstesnių. Vienintelis scenarijus, kurio gali trūkti įrašant visus atidarymo/uždarymo įvykius, yra tai, kad durys pakartotinai atidaromos/uždaromos per 4-5 sekundes, o tai yra labai mažai tikėtinas atvejis - tikriausiai atvejis, kai vaikas žaidžia su durimis.

3 žingsnis: sveikatos patikrinimas

Man taip pat reikėjo būdo gauti sveikatos patikrinimo pranešimą iš ESP, iš kurio jis siunčia ESP akumuliatoriaus įkrovos lygį, kad būtų užtikrinta, jog jutiklis gerai veikia be rankinio patikrinimo. Tam ATTiny kas 12 valandų siunčia WAKE_UP signalą. Jis gali būti sukonfigūruotas naudojant kintamąjį WAKEUP_COUNT, esantį ATtiny kode. Tai labai naudinga durims ar langams, kurie retai atidaromi, todėl galbūt nesužinosite, ar kas nors negerai su jutikliu ar jo baterija.

Jei jums nereikia sveikatos tikrinimo funkcijos, visa ATTiny naudojimo koncepcija nereikalinga. Tokiu atveju galite rasti kitų žmonių sukurtų konstrukcijų, kai tiekimas į ESP tiekiamas per MOSFET, todėl galite pasiekti nulinės srovės pritraukimą, kai durys nėra valdomos. Yra ir kitų dalykų, kuriais reikia pasirūpinti, pvz., Dabartinis traukimas turi būti vienodas atidarytų ir uždarytų durų padėtyje - tam aš kažkur mačiau dizainą, kuriame vietoj įprastos 2 būsenos buvo naudojamas 3 būsenų nendrinis jungiklis.

4 žingsnis: energijos matavimas ir baterijos veikimo laikas

Aš išmatavau srovės suvartojimą grandinėje ir užima ~ 30uA miegant ir aplink. Remiantis ATTiny duomenų lapais, jis turėtų būti maždaug 1–4 uA visai grandinei, įskaitant LDO ramybės srovę, bet tada mano matavimai rodo 30. MOSFET ir LDO sunaudoja nereikšmingą srovę.

Taigi 800 mAh baterija turėtų tarnauti ilgai. Neturiu tikslios statistikos, bet aš ją naudoju ant dviejų savo durų jau daugiau nei metus ir kiekviena 18650 ląstelė, kurioje liko apie 800 mAh, mano pagrindinėse duryse, kurios atsidaro ir užsidaro, trunka apie 5–6 mėnesius. mažiausiai 30 kartų per dieną. Ant stogo durų, kurios atidaromos tik kelis kartus per savaitę, jis trunka 7–8 mėnesius.

5 žingsnis: būsimi patobulinimai

1. ESP nepripažįsta MQTT pranešimo pristatymo. Programą galima patobulinti užsiprenumeravus temą, kurioje skelbiamas pranešimas, kad būtų patvirtintas pristatymas, arba naudojant „Async MQTT“biblioteką galima naudoti pranešimą su QoS 1.

2. OTA atnaujinimas: ESP kodą galima modifikuoti, kad būtų perskaityta atnaujinimo MQTT tema, ir įjungti OTA režimą, kad gautumėte failą.

3. ESP01 galima pakeisti ESP-12, kad būtų galima pasiekti daugiau įvesties PIN kodų, todėl prie to paties galima prijungti daugiau jutiklių. Tokiu atveju ryšys naudojant 2 bitų metodą neįmanomas. Tada tai galima patobulinti, kad būtų įdiegtas I2C ryšys tarp ATtiny ir ESP. Tai šiek tiek sudėtinga, bet veiksminga. Turiu, kad jis veikia kitoje sistemoje, kur ATTiny siunčia sukamojo kodavimo reikšmes į ESP per I2C liniją.

4. Dabartinė grandinė stebi ESP vidinį Vcc. Jei naudojame ESP12, tai galima pakeisti, kad būtų galima nuskaityti tikrąjį akumuliatoriaus įkrovą per ADC kaištį.

5. Ateityje taip pat paskelbsiu jo pakeitimą, kurį galima naudoti kaip atskirą jutiklį, nereikalaujant MQTT ar bet kokios namų automatizavimo sistemos. Jutiklis veiks savarankiškai ir suaktyvinus gali skambinti - žinoma, tam reikia interneto ryšio.

6. Ir sąrašas tęsiasi…

7. Atbulinės eigos akumuliatoriaus apsauga - ATLIKTA (tikrosios įrenginio nuotraukos yra senos ir todėl neatspindi MOSFET)

Rekomenduojamas: