Turinys:

„IoT“vandens aliarmas: 5 žingsniai (su nuotraukomis)
„IoT“vandens aliarmas: 5 žingsniai (su nuotraukomis)

Video: „IoT“vandens aliarmas: 5 žingsniai (su nuotraukomis)

Video: „IoT“vandens aliarmas: 5 žingsniai (su nuotraukomis)
Video: "Xiaomi Mijia Gateway" Aliarmo Signalas 2024, Liepa
Anonim
IoT vandens aliarmas
IoT vandens aliarmas

Neseniai patyriau virtuvės kanalizacijos atsarginę kopiją. Jei tuo metu nebūčiau namuose, mano bute būtų pažeistos grindys ir gipso kartonas. Laimei, aš žinojau apie problemą ir buvau pasiruošęs kaušeliu išsemti vandenį. Tai privertė mane galvoti apie potvynio signalizacijos pirkimą. „Amazon“atradau daug prieinamų produktų, tačiau tie, kurie turi interneto ryšį, turėjo daug neigiamų atsiliepimų, visų pirma dėl problemų, susijusių su patentuotomis pranešimo paslaugomis. Štai kodėl nusprendžiau sukurti savo „IoT“vandens signalizaciją, kuri naudotų patikimas pranešimo priemones.

1 žingsnis: veikimo principas

Veikimo principas
Veikimo principas

Žadintuvo smegenys turi AVR ATtiny85 mikrovaldiklį. Jis nustato įtampos rodmenis iš akumuliatoriaus ir vandens jutiklio ir palygina juos su iš anksto nustatyta verte, kad nustatytų vandens buvimą arba žemos baterijos būklę.

Vandens jutiklis yra tik du laidai, išdėstyti maždaug 1 mm atstumu vienas nuo kito. Vienas iš laidų yra prijungtas prie 3,3 V, o kitas - prie mikrovaldiklio jutiklio kaiščio, kuris taip pat yra prijungtas prie žemės per 0,5 MOhm rezistorių. Paprastai pasipriešinimas tarp jutiklio laidų yra labai didelis (gerokai daugiau nei 10 MOhm), todėl jutiklio kaištis traukiamas iki 0 V. Tačiau, kai tarp laidų yra vandens, varža sumažėja iki mažiau nei 1 MOhm, ir jutimo kaištis mato tam tikrą įtampą (mano atveju apie 1,5 V). Kai ATtiny85 aptinka šią įtampą jutikliniame kaištyje, ji įjungia MOSFET, kad įjungtų signalą, ir siunčia pažadinimo signalą į ESP8266 modulį, kuris yra atsakingas už įspėjimų (el. Pašto ir tiesioginių pranešimų) siuntimą. Po minutės zvimbimo žadintuvas išjungiamas ir jį galima iš naujo nustatyti tik veikiant maitinimo ciklui.

Šis įrenginys veikia iš dviejų šarminių arba NiMH elementų. Mikrokontroleris didžiąją laiko dalį miega, kad tausotų baterijas, kartais pabunda, kad patikrintų vandens jutiklį ir baterijų įtampą. Jei baterijos išsikrauna, mikrovaldiklis pažadina ESP8266 modulį ir siunčia įspėjimą apie išsikrovusią bateriją. Po įspėjimo signalizacija išjungiama, kad akumuliatorius neišsikrautų.

Kadangi ESP8266 modulis yra atsakingas už įspėjimų apie išsikrovusią bateriją ir potvynių siuntimą, jam reikia valdymo signalo iš ATiny85. Kadangi yra ribotas kaiščių skaičius, šį valdymo signalą generuoja tas pats kaištis, atsakingas už akumuliatoriaus šviesos diodo indikaciją. Įprasto darbo metu (aliarmas įjungtas ir baterijos įkrautos) šviesos diodas su pertrūkiais mirksi. Nustačius žemą akumuliatoriaus būklę, šviesos diodas įsijungia, kad būtų užtikrintas aukštas signalas į ESP modulio RX kaištį. Jei aptinkamas vanduo, akumuliatoriaus šviesos diodas užges, kol ESP8266 budės.

2 žingsnis: projektavimas ir surinkimas

Projektavimas ir surinkimas
Projektavimas ir surinkimas
Projektavimas ir surinkimas
Projektavimas ir surinkimas
Projektavimas ir surinkimas
Projektavimas ir surinkimas

Aš suprojektavau grandinę, kuri bus pastatyta ant dvipusio 4x6 cm protoboto, naudojant daugiausia 0805 SMD dalis. Pateiktos schemos yra pagrįstos šia konstrukcija, tačiau ją galima lengvai pritaikyti skylių sudedamosioms dalims (patarimas: norint sumažinti erdvę, lituoti skylių rezistorius vertikaliai).

Būtinos šios dalys:

- Rezistoriai: 330 Ω x 1; 470 Ω x 1; 680 Ω x 1; 1 kΩ x 1; 10 kΩ x 3; 470 kΩ x 3; - vienas 10 µF keraminis kondensatorius- vienas loginio lygio N kanalo MOSFET (pvz., RFP30N06LE arba AO3400)- vienas raudonas ir vienas geltonas šviesos diodas (arba kitos spalvos, jei norite).- Dviejų laidų varžtų gnybtų jungtys x 3 (jos nėra absoliučiai būtina, tačiau bandymo metu lengviau prijungti ir atjungti periferiją)- garsus pjezo garsinis signalas, tinkantis 3,3 V įtampai- mikrokontroleris „ATtiny85“(PDIP versija)- 8 kontaktų PDIP lizdas mikrovaldikliui- ESP-01 modulis (jį galima pakeisti kitu moduliu, pagrįstu ESP8266, tačiau tokiu atveju išdėstymas pasikeis daug)-3,3 V DC-DC stiprintuvo keitiklis, galintis tiekti 200 mA (500 mA pliūpsnio) sroves esant 2,2 V įtampai įvesties. (Rekomenduoju https://www.canton-electronics.com/power-converter… dėl itin mažos ramybės srovės)-Viena 3 kontaktų jungtis-dvi 4 kontaktų jungtys arba viena 2x4 galvutė-22 AWG tvirti laidai vandens jutikliui- 22 AWG vielos viela (arba kitos rūšies plona atvira viela, kad atsirastų pėdsakų)

Aš rekomenduoju aukščiau išvardytas rezistorių vertes, tačiau daugumą jų galite pakeisti panašiomis vertėmis. Priklausomai nuo norimų naudoti šviesos diodų tipo, norint gauti norimą ryškumą, gali tekti pakoreguoti srovės ribojimo rezistoriaus vertes. MOSFET gali būti per skylę arba SMT (SOT23). MOSFET tipas turi įtakos tik 330 omų rezistoriaus orientacijai. Jei planuojate naudoti šią grandinę su NiMH baterijomis, rekomenduojama naudoti PTC saugiklį (pvz., 1 A). Tačiau su šarminėmis baterijomis to nereikia. Patarimas: šiai signalizacijai reikalingas detales galima pigiai įsigyti „ebay“arba „aliexpress“.

Be to, norint programuoti ESP-01 modulį, jums reikės duonos lentos, kelių 10 k rezistorių, turinčių per skylę, kelių jungčių su vyriškais vyrais ir moterimis („dupont“) ir USB-UART adapterio.

Vandens jutiklis gali būti pagamintas įvairiais būdais, tačiau paprasčiausias yra du 22 AWG laidai, kurių galai (1 cm ilgio) yra maždaug 1 mm atstumu vienas nuo kito. Tikslas yra turėti mažiau nei 5 MΩ varžą tarp jutiklio kontaktų, kai yra vandens.

Grandinė skirta maksimaliai taupyti akumuliatorių. Stebėjimo režimu jis suvartoja tik 40–60 µA (pašalinus maitinimo šviesos diodą ant ESP-01 modulio). Įjungus pavojaus signalą, grandinė sekundei ar mažiau užtrauks 300–500 mA (esant 2,4 V įėjimui), o po to srovė nukris žemiau 180 mA. Kai ESP modulis išsiųs pranešimus, srovės suvartojimas sumažės žemiau 70 mA, kol garsinis signalas išsijungs. Tada aliarmas išsijungs, o srovė bus mažesnė nei 30 µA. Taigi AA baterijų rinkinys galės maitinti grandinę daugelį mėnesių (greičiausiai daugiau nei metus). Jei naudojate kitą padidinimo keitiklį, tarkime, esant 500 µA ramybės srovei, baterijas reikės keisti daug dažniau.

Surinkimo patarimai:

Naudokite nuolatinį žymeklį, kad pažymėtumėte visus protoboard pėdsakus ir komponentus, kad būtų lengviau lituoti. Rekomenduoju tęsti tokia tvarka:

- viršutiniai SMT šviesos diodai ir izoliuoti vieliniai tiltai

-viršutinė MOSFET pusė (pastaba: jei turite SOT-23 MOSFET, padėkite ją įstrižai, kaip nuotraukoje. Jei naudojate MOSFET per skylę, padėkite jį horizontaliai, vartų kaištį nustatydami I3 padėtyje.)

- viršutinė skylių dalis (pastaba: garsinis signalas nėra lituojamas ir jo net nereikia montuoti prie PCB)

- atvirkštinės pusės SMT dalys ir pėdsakai (pvz., atskiros sruogos iš AWG22 vielos)

3 žingsnis: programinė įranga

„ATtiny85“C kodas

Main.c yra kodas, kurį reikia surinkti ir įkelti į mikrovaldiklį. Jei ketinate naudoti „Arduino“plokštę kaip programuotoją, šioje pamokoje rasite prijungimo schemą. Turite sekti tik šiuos skyrius (ignoruoti likusius):

-„Arduino Uno“konfigūravimas kaip IPT (programavimas sistemoje)

- „ATtiny85“prijungimas prie „Arduino Uno“.

Norėdami surinkti ir įkelti programinę -aparatinę įrangą, jums reikės „CrossPack“(„Mac OS“) arba „AVR“įrankių grandinės („Windows“). Norint surinkti kodą, reikia vykdyti šią komandą:

avr -gcc -Os -mmcu = attiny85 -c main.c; avr -gcc -mmcu = attiny85 -o main.elf main.o; avr -objcopy -j.text -j.data -O ihex main.elf main.hex

Norėdami įkelti programinę -aparatinę įrangą, atlikite šiuos veiksmus:

avrdude -c arduino -p attiny85 -P /dev/cu.usbmodem1411 -b 19200 -e -U blykstė: w: main.hex

Vietoj „/dev/cu.usbmodem1411“greičiausiai turėsite įterpti nuoseklųjį prievadą, prie kurio prijungtas „Arduino“(jį rasite „Arduino IDE: Tools Port“).

Kode yra daug funkcijų. deep_sleep () priverčia mikrovaldiklį įjungti labai mažos galios būseną maždaug 8 sekundėms. read_volt () naudojamas akumuliatoriaus ir jutiklio įtampai matuoti. Akumuliatoriaus įtampa matuojama pagal vidinę įtampos etaloną (2,56 V plius arba minus keli procentai), o jutiklio įtampa matuojama pagal Vcc = 3,3 V. Rodmenys lyginami su BATT_THRESHOLD ir SENSOR_THRESHOLD, atitinkamai apibrėžtais kaip 932 ir 102, kurie atitinka ~ 2,3 ir 0,3 V. Norėdami pagerinti akumuliatoriaus veikimo laiką, galite sumažinti akumuliatoriaus slenkstinę vertę, tačiau tai nerekomenduojama (išsamesnės informacijos rasite skyriuje „Akumuliatoriaus svarstymai“).

activ_alarm () praneša ESP moduliui apie vandens aptikimą ir pasigirsta signalinis signalas. low_batt_notification () praneša ESP moduliui, kad baterija išsikrovusi, ir taip pat skamba garsinis signalas. Jei nenorite būti pažadintas vidury nakties, kad pakeistumėte bateriją, pašalinkite „| 1 <“iš „low_batt_notification ()“.

„Arduino“eskizas, skirtas ESP-01

Aš pasirinkau užprogramuoti ESP modulį naudodami „Arduino HAL“(vadovaukitės sąrankos instrukcijomis). Be to, naudoju šias dvi bibliotekas:

ESP8266 Siųsti el. Laišką Górász Péter

ESP8266 „Arduino Hannover“komandos „Pushover“

Pirmoji biblioteka prisijungia prie SMTP serverio ir siunčia įspėjimą jūsų el. Pašto adresu. Tiesiog sukurkite „ESP“„Gmail“paskyrą ir pridėkite kredencialus prie kodo. Antroji biblioteka siunčia tiesioginius pranešimus per „Pushover“paslaugą (pranešimai yra nemokami, tačiau už programos įdiegimą telefone/planšetiniame kompiuteryje turite sumokėti vieną kartą). Atsisiųskite abi bibliotekas. Įdėkite el. Pašto bibliotekos turinį į eskizų aplanką („arduino“jį sukurs, kai pirmą kartą atidarysite arduino eskizą). Įdiekite „Pushover“biblioteką per IDE (Eskizas -> Įtraukti biblioteką -> Pridėti. ZIP biblioteką).

Norėdami užprogramuoti ESP-01 modulį, vadovaukitės šia pamoka: https://www.allaboutcircuits.com/projects/breadbo… Nereikia vargti, kai reikia perkaitinti vieną kaiščių eilutę, kaip parodyta vadove laidai, skirti modulio kaiščiams prijungti prie duonos lentos. Nepamirškite, kad padidinimo keitiklis ir USB-UART adapteris turi būti bendri (pastaba: galbūt galėsite naudoti 3,3 V USB-UART adapterio išvestį, o ne padidinimo keitiklį, bet greičiausiai tai nebus padaryta) gali išleisti pakankamai srovės).

4 žingsnis: akumuliatoriaus svarstymai

Pateiktas programinės įrangos kodas yra iš anksto sukonfigūruotas taip, kad išsiųstų įspėjimą apie išsikrovusią bateriją ir išsijungtų esant ~ 2,3 V. Ši riba pagrįsta prielaida, kad dvi NiMH baterijos yra naudojamos nuosekliai. Nerekomenduojama išleisti jokių atskirų NiMH elementų žemiau 1 V. Darant prielaidą, kad abiejų elementų talpa ir iškrovos charakteristikos yra vienodos, abi jos bus atjungtos esant ~ 1,15 V įtampai - gerai saugiame diapazone. Tačiau NiMH elementai, kurie buvo naudojami daugelį iškrovimo ciklų, paprastai skiriasi talpa. Galima toleruoti iki 30% talpos skirtumą, nes tai vis tiek lemtų žemiausią įtampos elemento nutraukimo tašką apie 1 V.

Nors galima sumažinti žemą akumuliatoriaus slenkstį programinėje įrangoje, tai pašalintų saugos ribą, o tai gali sukelti akumuliatoriaus išsikrovimą ir sugadinimą, o tikimasi tik nedidelio akumuliatoriaus veikimo laiko pailgėjimo (NiMH elementas yra> 85% išleidžiama esant 1,15 V įtampai).

Kitas veiksnys, į kurį reikia atsižvelgti, yra stiprintuvo keitiklio gebėjimas tiekti ne mažesnę kaip 3,0 V įtampą (2,5 V, remiantis anekdotiniais įrodymais) esant 300–500 mA maksimaliai srovei esant žemoms baterijoms. Mažas vidinis NiMH akumuliatorių pasipriešinimas sukelia tik nežymų 0,1 V kritimą esant didžiausioms srovėms, todėl pora NiMH elementų, iškraunamų iki 2,3 V (atvira grandinė), padidinimo keitikliui galės suteikti bent 2,2 V įtampą. Tačiau su šarminėmis baterijomis viskas yra sudėtingiau. Kai pora AA baterijų veikia esant 2,2–2,3 V įtampai (atvira grandinė), esant didžiausioms srovėms, galima tikėtis 0,2–0,4 V įtampos kritimo. Nors patikrinau, ar grandinė veikia su rekomenduojamu padidinimo keitikliu, kurio maksimali srovė tiekiama vos 1,8 V, dėl to išėjimo įtampa gali trumpam nukristi žemiau espresifo siūlomos vertės. Taigi išjungimo slenkstis 2,3 V palieka mažai saugumo ribų naudojant šarmines baterijas (atminkite, kad mikrovaldiklio atliekamas įtampos matavimas yra tikslus tik plius minus). Siekiant užtikrinti, kad ESP modulis netrikdytų, kai šarminių baterijų įkrova yra maža, rekomenduoju padidinti išjungimo įtampą iki 2,4 V (#define BATT_THRESHOLD 973). Esant 1,2 V įtampai (atvira grandinė), šarminis elementas išsikrauna apie 70%, o tai yra tik 5-10 procentinių punktų mažesnis nei iškrovos laipsnis esant 1,15 V vienam elementui.

Tiek NiMH, tiek šarminės ląstelės turi privalumų ir trūkumų. Šarminės baterijos yra saugesnės (neužsidega, jei yra sutrumpintos) ir turi daug mažesnį savaiminio išsikrovimo greitį. Tačiau dėl mažo vidinio pasipriešinimo NiMH baterijos garantuoja patikimą ESP8266 veikimą žemesnėje ribinėje vietoje. Bet galiausiai bet kurį tipą galima naudoti laikantis tam tikrų atsargumo priemonių, todėl tai tik asmeninis pasirinkimas.

5 veiksmas: teisinis atsisakymas

Šią grandinę sukūrė neprofesionalus mėgėjas, skirtas tik pomėgiams. Šis dizainas dalijamasi sąžiningai, tačiau nesuteikiama jokia garantija. Naudokitės ja ir dalinkitės su kitais savo rizika. Atkurdami grandinę sutinkate, kad išradėjas nebus atsakingas už bet kokią žalą (įskaitant, bet neapsiribojant, turto vertės sumažėjimą ir sužalojimą), kuri gali atsirasti tiesiogiai ar netiesiogiai dėl šios grandinės gedimo ar įprasto naudojimo. Jei jūsų šalies įstatymai panaikina arba draudžia atsisakyti atsakomybės, jūs negalite naudoti šio dizaino. Jei bendrinate šį dizainą ar modifikuotą grandinę, pagrįstą šia konstrukcija, turite pripažinti pradinį išradėją, nurodydami šios instrukcijos URL.

Rekomenduojamas: