Talaan ng mga Nilalaman:

IoT Water Alarm: 5 Hakbang (na may Mga Larawan)
IoT Water Alarm: 5 Hakbang (na may Mga Larawan)

Video: IoT Water Alarm: 5 Hakbang (na may Mga Larawan)

Video: IoT Water Alarm: 5 Hakbang (na may Mga Larawan)
Video: How to make a Long Range paper airplane || Amazing Origami Paper jet Model F-14 2024, Hulyo
Anonim
IoT Alarm sa Tubig
IoT Alarm sa Tubig

Kamakailan lamang nakaranas ako ng backup ng kitchen drain. Kung wala ako sa bahay nang oras na iyon, magdulot ito ng pinsala sa sahig at drywall sa aking apartment. Sa kasamaang palad, alam ko ang problema at handa na akong mag-scoop ng tubig gamit ang isang timba. Napaisip ako tungkol sa pagbili ng isang alarma sa baha. Natuklasan ko ang maraming mga abot-kayang produkto sa Amazon, ngunit ang mga may koneksyon sa internet ay may isang makabuluhang porsyento ng mga negatibong pagsusuri, lalo na dahil sa mga isyu sa pagmamay-ari na mga serbisyo sa pag-abiso. Iyon ang dahilan kung bakit napagpasyahan kong gumawa ng sarili kong alarm sa tubig ng IoT na gagamit ng maaasahang paraan ng pag-abiso na aking pinili.

Hakbang 1: Prinsipyo ng Pagpapatakbo

Prinsipyo ng Pagpapatakbo
Prinsipyo ng Pagpapatakbo

Ang alarma ay mayroong isang AVR ATtiny85 microcontroller bilang utak nito. Kinakailangan ang mga pagbabasa ng boltahe mula sa baterya at sensor ng tubig at inihahambing ang mga ito sa paunang natukoy na halaga upang makita ang pagkakaroon ng tubig o isang kondisyong mababa ang baterya.

Ang sensor ng tubig ay simpleng dalawang wires na nakalagay na halos 1 mm ang layo. Ang isa sa mga wire ay konektado sa 3.3 V, at ang isa pa ay konektado sa isang sensing pin sa microcontroller, na konektado din sa lupa sa pamamagitan ng isang resistor na 0.5 MOhm. Karaniwan, ang paglaban sa pagitan ng mga wire ng sensor ay napakataas (higit sa 10 MOhm), kaya't ang sensing pin ay hinila hanggang sa 0 V. Gayunpaman, kapag mayroong tubig sa pagitan ng mga wire, ang resistensya ay bumaba sa mas mababa sa 1 MOhm, at ang sensing pin ay nakakakita ng ilang boltahe (sa aking kaso tungkol sa 1.5 V). Kapag nakita ng ATtiny85 ang boltahe na ito sa sensing pin, pinapagana nito ang isang MOSFET upang mapagana ang isang buzzer, at ipadala ang signal ng paggising sa module na ESP8266 na responsable sa pagpapadala ng mga alerto (email at mga notification sa push). Matapos ang isang minutong paghiging, ang alarma ay hindi naka-armas, at maaaring i-reset lamang sa pamamagitan ng pagbibisikleta ng kuryente.

Ang yunit na ito ay tumatakbo sa dalawang alkaline o NiMH cells. Ang microcontroller ay natutulog halos lahat ng oras upang makatipid ng mga baterya, paulit-ulit na nakakagising upang suriin ang sensor ng tubig pati na rin ang boltahe ng mga baterya. Kung mababa ang mga baterya, ginising ng microcontroller ang module na ESP8266 upang magpadala ng mababang babalang baterya. Matapos ang babala, ang alarma ay disarmado upang maiwasan ang labis na paglabas ng baterya.

Dahil ang module ng ESP8266 ay responsable para sa pagpapadala ng parehong mababang babala ng baterya pati na rin ang mga alerto sa pagbaha, nangangailangan ito ng isang signal ng kontrol mula sa ATiny85. Dahil sa limitadong bilang ng mga magagamit na pin, ang control signal na ito ay nabuo ng parehong pin na responsable para sa pahiwatig na LED ng baterya. Sa panahon ng normal na operasyon (ang alarma ay armado at ang mga baterya ay sisingilin), ang LED ay kumikislap nang paulit-ulit. Kapag napansin ang mababang kondisyon ng baterya, ang LED ay nakabukas upang magbigay ng mataas na signal sa RX pin ng module ng ESP. Kung may napansin na tubig, ang baterya LED ay papatay habang ang ESP8266 ay gising..

Hakbang 2: Disenyo at Assembly

Disenyo at Assembly
Disenyo at Assembly
Disenyo at Assembly
Disenyo at Assembly
Disenyo at Assembly
Disenyo at Assembly

Dinisenyo ko ang circuit na itatayo sa isang dobleng panig na 4x6 cm protoboard gamit ang halos 0805 mga bahagi ng SMD. Ang ipinakita na mga eskematiko ay batay sa pagbuo na ito, ngunit madali itong maiakma para sa mga bahagi ng butas (tip: upang i-minimize ang puwang, patayo through-hole resistors patayo).

Ang mga sumusunod na bahagi ay kinakailangan:

- Mga resistorista: 330 Ω x 1; 470 Ω x 1; 680 Ω x 1; 1 kΩ x 1; 10 kΩ x 3; 470 kΩ x 3; - Isang 10 µF ceramic capacitor- Isang lohikal na antas ng N-channel MOSFET (hal. RFP30N06LE o AO3400) - Isang pula at isang dilaw na LED (o iba pang mga kulay kung nais mo).- Two-wire screw terminal konektor x 3 (hindi sila ganap na kinakailangan, ngunit ginagawang mas madali upang kumonekta at idiskonekta ang paligid sa panahon ng pagsubok) - Isang malakas na buzzer ng piezo na mabuti para sa 3.3 V- Isang ATtiny85 microcontroller (bersyon ng PDIP) - Isang 8-pin na socket ng PDIP para sa microcontroller- Isang module na ESP-01 (maaari itong mapalitan ng isa pang module na batay sa ESP8266, ngunit magkakaroon ng maraming mga pagbabago sa layout sa kasong iyon) - Isang 3.3 V DC-DC boost converter na may kakayahang maghatid ng 200 mA (500 mA burst) na mga alon sa 2.2 V input (Inirerekumenda ko ang https://www.canton-electronics.com/power-converter… dahil sa ultra-low quiescent na kasalukuyang) - Isang 3 pin na babaeng header- Dalawang 4-pin na header na babae o isang 2x4 header- 22 AWG solid wires para sa water sensor- 22 AWG straced wire (o ibang uri ng manipis na nakalantad na kawad upang lumikha ng mga bakas)

Inirerekumenda ko ang mga halaga ng risistor na nakalista sa itaas, ngunit maaari mong palitan ang karamihan sa mga ito para sa mga katulad na halaga. Nakasalalay sa uri ng mga LED na nais mong gamitin, maaaring kailanganin mong ayusin ang kasalukuyang nililimitahan na mga halaga ng risistor upang makuha ang ninanais na ningning. Ang MOSFET ay maaaring maging through-hole o SMT (SOT23). Ang oryentasyon lamang ng 330 Ohm risistor ay apektado ng uri ng MOSFET. Ang isang PTC fuse (hal. Na-rate para sa 1 A) ay inirerekomenda kung nagpaplano kang gamitin ang circuit na ito sa mga baterya ng NiMH. Gayunpaman, hindi ito kinakailangan sa mga baterya ng alkalina. Tip: ang mga bahagi na kinakailangan para sa alarma na ito ay maaaring mabili nang murang mula sa ebay o aliexpress.

Bilang karagdagan kakailanganin mo ang isang breadboard, maraming through-hole na 10k resistors, maraming male-male at female-male jumper ("dupont") na mga wire at isang USB-UART adapter upang mai-program ang module na ESP-01.

Ang sensor ng tubig ay maaaring gawin sa iba't ibang mga paraan, ngunit ang pinakasimpleng isa ay dalawang 22 na mga wire na AWG na may nakalantad na mga dulo (1 cm ang haba) na may pagitan na humigit-kumulang na 1 mm. Ang layunin ay magkaroon ng mas mababa sa 5 MΩ paglaban sa pagitan ng mga contact ng sensor kapag mayroon ang tubig.

Ang circuit ay idinisenyo para sa maximum na ekonomiya ng baterya. Gumuhit lamang ito ng 40-60 µA sa rehimen ng pagsubaybay (na tinanggal ang power LED sa module na ESP-01). Kapag na-trigger ang alarma, kukuha ang circuit ng 300-500 mA (sa 2.4 V input) para sa isang segundo o mas kaunti, at pagkatapos nito ay bababa ang kasalukuyang sa ibaba 180 mA. Kapag natapos na ang module ng ESP sa pagpapadala ng mga abiso, ang kasalukuyang pagkonsumo ay bababa sa ibaba 70 mA hanggang sa ang buzzer ay patayin. Pagkatapos ang alarma ay mag-aalis ng sandata mismo, at ang kasalukuyang pagkonsumo ay mas mababa sa 30 A. Sa gayon ang isang hanay ng mga baterya ng AA ay makakagamit ng circuit sa maraming buwan (malamang na higit sa isang taon). Kung gumamit ka ng iba't ibang boost converter, sabihin na may kasalukuyang katahimik na 500 µA, ang mga baterya ay kailangang palitan nang mas madalas.

Mga tip sa pagpupulong:

Gumamit ng isang permanenteng marker upang lagyan ng label ang lahat ng mga bakas at sangkap sa protoboard para sa mas madaling paghihinang. Inirerekumenda kong magpatuloy sa sumusunod na pagkakasunud-sunod:

- Mga nangungunang panig ng SMT LED at insulated wire bridges

- tuktok na bahagi ng MOSFET (tala: kung mayroon kang isang SOT-23 MOSFET, ilagay ito sa pahilis tulad ng larawan. Kung gumagamit ka ng isang through-hole MOSFET, ilagay ito nang pahalang gamit ang pin ng gate sa posisyon na I3.)

- tuktok na bahagi sa pamamagitan ng mga bahagi ng butas (tala: ang buzzer ay hindi na-solder at hindi na kailangang mai-mount sa PCB)

- Baligtarin ang mga bahagi ng SMT at mga bakas (hal. indibidwal na mga hibla mula sa AWG22 wire)

Hakbang 3: Firmware

C code para sa ATtiny85

Naglalaman ang Main.c ng code na kailangang maipon at mai-upload sa microcontroller. Kung gagamit ka ng isang Arduino board bilang isang programmer, mahahanap mo ang diagram ng mga kable sa tutorial na ito. Kailangan mong sundin lamang ang mga sumusunod na seksyon (huwag pansinin ang natitira):

- Pag-configure ng Arduino Uno bilang isang ISP (In-System Programming)

- Pagkonekta sa ATtiny85 kay Arduino Uno.

Upang maipon at mai-upload ang firmware, kakailanganin mo ang alinman sa CrossPack (para sa Mac OS) o AVR toolchain (para sa Windows). Ang sumusunod na utos ay kailangang ipatupad upang maipon ang code:

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

Upang mai-upload ang firmware, patakbuhin ang sumusunod:

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

Sa halip na "/dev/cu.usbmodem1411" malamang na kailangan mong ipasok ang serial port kung saan nakakonekta ang iyong Arduino (mahahanap mo ito sa Arduino IDE: Tools Port).

Naglalaman ang code ng maraming pag-andar. Ginagawa ng deep_sleep () ang microcontroller na ipasok ang isang napakababang estado ng kuryente sa humigit-kumulang na 8 segundo. Ang read_volt () ay ginagamit upang sukatin ang baterya at mga voltages ng sensor. Ang boltahe ng baterya ay sinusukat laban sa sanggunian ng panloob na boltahe (2.56 V plus o minus ng ilang porsyento) samantalang ang boltahe ng sensor ay sinusukat laban sa Vcc = 3.3 V. Ang mga pagbasa ay inihambing kumpara sa BATT_THRESHOLD at SENSOR_THRESHOLD na tinukoy bilang 932 at 102 ayon sa pagkakabanggit, na tumutugma sa ~ 2.3 at 0.3 V. Maaari mong mabawasan ang halaga ng threshold ng baterya para sa pinahusay na buhay ng baterya, ngunit hindi ito inirerekumenda (sumangguni sa pagsasaalang-alang ng Baterya para sa detalyadong impormasyon).

Inaabisuhan ng activ_alarm () ang module ng ESP tungkol sa pagtuklas ng tubig at tunog ng buzzer. Inaabisuhan ng low_batt_notification () ang module ng ESP na ang baterya ay mababa at din ang tunog ng buzzer. Kung hindi mo nais na magising sa kalagitnaan ng gabi upang baguhin ang baterya, alisin ang "| 1 <" sa low_batt_notification ().

Sketch ng Arduino para sa ESP-01

Pinili kong i-program ang module ng ESP gamit ang Arduino HAL (sundin ang link para sa mga tagubilin sa pag-set up). Bilang karagdagan ginamit ko ang sumusunod na dalawang mga aklatan:

ESP8266 Magpadala ng Email ni Górász Péter

Ang ESP8266 Pushover ng koponan ng Arduino Hannover

Ang unang silid-aklatan ay kumokonekta sa isang SMTP server at nagpapadala ng isang alerto sa iyong email address. Lumikha lamang ng isang gmail account para sa iyong ESP, at idagdag ang mga kredensyal sa code. Ang pangalawang silid-aklatan ay nagpapadala ng mga push notification sa pamamagitan ng serbisyo ng Pushover (libre ang mga notification, ngunit kailangan mong magbayad nang isang beses upang mai-install ang application sa iyong telepono / tablet). Mag-download ng parehong mga aklatan. Ilagay ang mga nilalaman ng library ng Magpadala Email sa iyong folder ng sketch (lilikha ito ng arduino kapag binuksan mo ang arduino sketch sa unang pagkakataon). I-install ang pushover library sa pamamagitan ng IDE (Sketch -> Isama ang Library -> Idagdag.. Library ZIP).

Upang ma-program ang module na ESP-01 maaari mong sundin ang sumusunod na tutorial: https://www.allaboutcircuits.com/projects/breadbo… Hindi na kailangang mag-abala sa paglutas ng isang hilera ng mga pin tulad ng ipinakita sa gabay - gumamit lamang ng babaeng-lalaking dupont mga wire upang ikonekta ang mga pin ng module sa breadboard. Huwag kalimutan na ang boost converter at ang USB-UART adapter ay kailangang magbahagi ng lupa (tandaan: maaari mong magamit ang 3.3 V na output ng USB-UART adapter sa halip na ang boost converter, ngunit malamang na hindi ito makapag-output ng sapat na kasalukuyang).

Hakbang 4: Mga Pagsasaalang-alang sa Baterya

Ang ibinigay na firmware code ay na-configure upang magpadala ng isang mababang babala ng baterya at magsara sa ~ 2.3 V. Ang threshold na ito ay batay sa palagay na ang dalawang mga baterya ng NiMH ay ginagamit sa serye. Hindi inirerekumenda na palabasin ang anumang indibidwal na cell ng NiMH sa ibaba 1 V. Ipagpalagay na ang parehong mga cell ay may pantay na kapasidad at naglalabas na mga katangian, ang pareho sa kanila ay mapuputol sa ~ 1.15 V - maayos sa loob ng ligtas na saklaw. Gayunpaman, ang mga cell ng NiMH na ginamit para sa maraming mga siklo ng paglabas ay madalas na magkakaiba sa kapasidad. Hanggang sa 30% na pagkakaiba sa kapasidad ay maaaring tiisin dahil magreresulta pa rin ito sa pinakamababang boltahe na cut-off point sa paligid ng 1 V.

Habang posible na bawasan ang mababang threshold ng baterya sa firmware, ang paggawa nito ay aalisin ang margin ng kaligtasan, at maaaring magresulta sa sobrang paglabas at pinsala ng baterya habang ang isang maliit na pagtaas ng buhay ng baterya ang aasahan (isang NiMH cell ay> 85% pinalabas sa 1.15 V).

Ang isa pang kadahilanan na kailangang isaalang-alang ay ang kakayahan ng boost converter na magbigay ng hindi bababa sa 3.0 V (2.5 V ayon sa anecdotal na ebidensya) sa 300-500 mA na kasalukuyang tugatog sa mababang baterya. Ang mababang panloob na pagtutol ng mga baterya ng NiMH ay nagdudulot lamang ng isang bale-walong pagbagsak ng 0.1 V sa mga rurok na alon, kaya't ang isang pares ng mga cell ng NiMH na pinalabas sa 2.3 V (open circuit) ay makapagbibigay ng hindi bababa sa 2.2 V sa boost converter. Gayunpaman, ito ay mas kumplikado sa mga baterya ng alkalina. Sa isang pares ng mga baterya ng AA na nakaupo sa 2.2-2.3 V (bukas na circuit) isang boltahe na drop ng 0.2-0.4 V ang aasahan sa mga rurok na alon. Bagaman na-verify ko na gumana ang circuit sa inirekumendang boost converter na may maliit na 1.8 V na ibinibigay sa mga rurok na alon, malamang na ito ay sanhi ng paglabas ng boltahe ng output pansamantala sa ibaba ng halagang iminungkahi ng Espressiff. Sa gayon ang cut-off na threshold na 2.3 V ay nag-iiwan ng maliit na margin ng kaligtasan na may mga alkaline na baterya (tandaan na ang isang pagsukat ng boltahe na isinagawa ng microcontroller ay tumpak lamang sa loob ng plus o minus ng ilang porsyento). Upang matiyak na ang module ng ESP ay hindi kumikislap kapag ang mga baterya ng alkalina ay mababa, inirerekumenda kong dagdagan ang cut-off na boltahe sa 2.4 V (#define BATT_THRESHOLD 973). Sa 1.2 V (open circuit) ang isang alkaline cell ay halos 70% na pinalabas na 5-10 porsyento lamang na puntos na mas mababa kaysa sa antas ng paglabas sa 1.15 V bawat cell.

Parehong NiMH at mga alkalina cell ay may mga kalamangan at kawalan para sa application na ito. Ang mga baterya ng alkalina ay mas ligtas (huwag masunog kung maikli), at mayroon silang mas mababang rate ng paglabas ng sarili. Gayunpaman, ginagarantiyahan ng mga baterya ng NiMH ang maaasahang pagpapatakbo ng ESP8266 sa isang mas mababang cut-off point salamat sa kanilang mababang panloob na pagtutol. Ngunit sa huli, ang alinmang uri ay maaaring magamit nang may ilang pag-iingat, kaya't ito ay isang bagay lamang ng personal na kagustuhan.

Hakbang 5: Legal na Pagwawaksi

Ang circuit na ito ay dinisenyo ng isang hindi propesyonal na hobbyist para sa mga aplikasyon ng libangan lamang. Ang disenyo na ito ay ibinahagi sa mabuting pananampalataya, ngunit walang warranty kahit ano pa man. Gamitin ito at ibahagi sa iba sa iyong sariling peligro. Sa pamamagitan ng muling paggawa ng circuit sumasang-ayon ka na ang imbentor ay hindi mananagot para sa anumang pinsala (kasama ngunit hindi limitado sa pagkasira ng mga assets at personal na pinsala) na maaaring mangyari nang direkta o hindi direkta sa pamamagitan ng hindi paggana o normal na paggamit ng circuit na ito. Kung ang mga batas ng iyong bansa ay nagpapawalang-bisa o nagbabawal sa pagwawaksi ng pananagutan na ito, hindi mo maaaring gamitin ang disenyo na ito. Kung ibinabahagi mo ang disenyo na ito o isang nabagong circuit batay sa disenyo na ito, dapat mong i-credit ang orihinal na imbentor sa pamamagitan ng pagpapahiwatig ng url ng itinuturo na ito.

Inirerekumendang: