Talaan ng mga Nilalaman:

Crawl Space Monitor (aka: Wala Nang Frozen Pipe !!): 12 Mga Hakbang (na may Mga Larawan)
Crawl Space Monitor (aka: Wala Nang Frozen Pipe !!): 12 Mga Hakbang (na may Mga Larawan)

Video: Crawl Space Monitor (aka: Wala Nang Frozen Pipe !!): 12 Mga Hakbang (na may Mga Larawan)

Video: Crawl Space Monitor (aka: Wala Nang Frozen Pipe !!): 12 Mga Hakbang (na may Mga Larawan)
Video: Weekly Strange News - 87 | UFOs | Paranormal | Mysterious | Universe 2024, Nobyembre
Anonim
Crawl Space Monitor (aka: Wala Nang Frozen Pipe !!)
Crawl Space Monitor (aka: Wala Nang Frozen Pipe !!)

Ang tubig sa aking bahay ay nagmumula sa aking balon sa pamamagitan ng isang hindi naiinit na puwang ng pag-crawl. Ang lahat ng pagtutubero sa kusina at banyo ay tumatakbo din sa puwang na ito. (Ang panloob na pagtutubero ay isang sampal na pag-iisip sa kalagitnaan ng dekada 70 sa bahay na ito!) Gumagamit ako ng mga lampara ng init sa mga "stock tank" na termostatic plug upang mapanatili ang isang temperatura sa itaas ng pagyeyelo. Mayroong ilang makabuluhang mga problema sa pag-aayos na ito: 1 - Walang kakayahang makita. Ang unang pahiwatig ng nasunog na mga bombilya ay mga nakapirming tubo! 2 - Minsan hindi papatayin ang mga plugs. Ginawa iyon para sa hindi magagandang sorpresa ay dumating ang singil sa kuryente. 3 - Walang granularity. Iningatan ko ang 3 bombilya na "online" (kabuuang 750 watts) at ito ay isang solusyon sa lahat o wala. (Hindi palaging hawakan ito ng 2 bombilya.) Matapos ipakilala kay Arduino, at makita ang ilan sa mga bagay na ginagawa ng ibang tao dito, nagpasya akong bibigyan ko ito ng isang pag-ikot. Aaminin ko mismo sa labas ng chute na walang kahihiyan akong na-snag at nag-tweak ng sample code mula sa mga proyekto ng ibang tao upang magawa ito, kahit na sa huli ay isinulat ko ulit ang lahat. Sa una, itinayo ko ang "WiFi Weather Station" na nahanap ko sa Adafruit.com at binago ito. Sa halip na mag-update ng isang web site, ginamit ko ang Amazon Web Services upang padalhan ako ng mga pag-update sa katayuan sa SMS. Nagdagdag din ako ng kontrol ng ilang 110V relay (https://www.adafruit.com/products/268). Nakakuha ako ng "matalino" at nagpasyang "masiksik" ito - mabuti - may isang bagay na naikli at nakuha ko ang isang puff ng magic blue na usok. Lahat ay pinirito … Walang pagkakaroon ng isa pang CC3000 WiFi breakout, nag-iba ako ng mga bagay sa oras na ito. Itinayo ko ito upang ma-monitor nang interactive sa pamamagitan ng serial interface at pagkatapos ay nagdagdag ng isang EZ-Link Bluetooth FTDI interface. (Wala nang pag-drag sa laptop sa ilalim ng bahay para sa mga pag-update ng software !!!) Gumawa rin ako ng isang interface ng Python na kumokonekta sa yunit sa pamamagitan ng Bluetooth, regular na kinukwestyon ito, at ipinapakita ang impormasyon sa katayuan sa aking Mac. (Mayroon ding isang "interface ng tao" na maaaring ma-access ng anumang terminal na software na pagtulad.) Bilang isang resulta ng muling pagsulat at pag-aalis ng lahat ng WiFi at RTC code, ang proyekto ay lumiliit sa laki mula sa higit sa 29K hanggang sa halos 10K. Pinagbuti din nito ang pagiging maaasahan sa lawak na ang hardware watchdog ay hindi pa nag-trigger sa loob ng ilang linggo na ito ay tumatakbo at nag-tweak ako.

2/17/16 Update / tala: Sa isang pagtatangka upang makakuha ng wastong pag-format sa ilan sa mga code (lalo na ang pag-indent ng Python code), ang mga bagay ay nagmula sa pangit hanggang sa hindi magamit. Sigurado ako na ang isyu ay sa aking pagtatapos sa kung saan, at magsisikap akong malaman ito. Hanggang sa panahong iyon, nagdagdag ako ng mga link sa mga file ng code sa pamamagitan ng DropBox. Dapat silang ma-access ng sinuman. Kung hindi, mangyaring ipaalam sa akin upang makuha ko ang mga ito sa iyo sa ibang paraan!

Hakbang 1: Mga Problema upang Malutas

Ang sistemang kinakailangan upang gawin ang mga sumusunod na bagay para sa akin: 1 - subaybayan ang temperatura sa lugar ng pag-crawl. 2 - i-on ang mga lampara ng init kung kinakailangan upang mapanatili ang temperatura sa itaas ng pagyeyelo. ng kanilang katayuan.4 - bigyan ako ng kakayahang makita ang temperatura at katayuan ng system, kasama ang: - tumatakbo ba ang system? - ano ang temperatura NGAYON? - ano ang pinalamig na nakuha sa temperatura? - ilang bombilya ang tumakbo? - Ilan ang mga bombilya na sumusubok ng mabuti? - ano ang aking kabuuang oras sa "magaan na minuto" (aka "burn time")? 5 - gawin ang lahat sa itaas nang hindi ko kinakailangang gumapang sa ilalim ng bahay !!! Napagpasyahan ko na ang pinakamadaling paraan upang subukan ang pagpapatakbo ng bombilya ay kasama ng isang light sensor. Ang ilan pang mga isyu na nais kong tugunan ay ang oras ng pag-ikot sa mga ilaw. Masyadong mabagal, at nasusunog ako ng hindi kinakailangang kuryente. Napakabilis, at nasa panganib ako na sunugin ang mga ito mula sa lahat ng pag-on at pag-off gamit ang nauugnay na pag-init at paglamig.

Hakbang 2: Ang Hardware

Ang Hardware
Ang Hardware

2 250 watt heat lamp1 500 watt lampara sa trabaho (nawala ang isa sa aking mga lampara ng init, kaya't ito ay stand-in) Arduino UnoDHT22 Temperature / Humitidy sensorGA1A12S202 light sensorPowerSwitch 110V relaysBruefruit EZ-Link Serial Interface & ProgrammerHigh-tech case (sandwich size Rubbermaid tub) Cable gland1 / 2 laki ng breadboardA plate ng acrylic para sa breadboard at ArduinoAssored jumper wires. Coleman 5-outlet "workshop strip" Gumamit din ako ng isang Adafruit Trinket bilang isang hardware watchdog, ngunit napatunayan na hindi kinakailangan (jinx, syempre!) At ako Sumulat ng isang hiwalay na itinuturo tungkol dito kaya't hindi ko na uulitin dito. Ang Coleman pigtail ay isang magandang nahanap, dahil binigyan ako nito ng 4 na outlet para sa aking mga lampara ng init PLUS isang outlet para sa suplay ng kuryente ng Arduino nang walang anumang karagdagang mga splitter o power strips na kasangkot. Na-rate sa isang buong 15 Amps na may switch at isang panloob na breaker, kakayanin nito ang lahat na maaari kong hilahin sa isang solong outlet.

Hakbang 3: Ang Diskarte

Habang ang system ay binuo ng application upang maupo sa paligid ng paghihintay, at upang gawin ang ilang mga bagay na medyo mabagal, ang hindi ko nais na gawin ay bumuo ng isang sistema kung saan nakaupo ang tagapagkontrol sa pagkaantala () na mga pag-ikot na hindi tumutugon. Nais ko ring mabago ang mga parameter ng pagsasaayos na malapit sa on-the-fly na maaari kong makuha - tiyak na hindi sa paraang nangangailangan ng muling pagsulat ng code o paggawa ng malawak na paghahanap at palitan ang mga operasyon sa pinagmulan. nahanap ang pinakahusay na mga artikulo ni Bill Earl sa "Multitasking the Arduino" (magsimula dito: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) at naging abala. Sa pamamagitan ng paglikha ng mga klase ng "timer" at "heater" nagawa ko ang lahat ng mga pag-andar ng tiyempo na gusto ko nang hindi gumagamit ng pagkaantala () (na may dalawang pagbubukod lamang) at i-configure ang mga bombilya ("heater") na may isang linya ng code para sa bawat isa isa

Hakbang 4: Ang Kable It Up

Kable It Up
Kable It Up
Kable It Up
Kable It Up

Ang diagram ng Fritzing ay hindi kasama ang Bluefruit EZ-LinkArduino 5V & Ground sa breadboard bus Ang busGA1A12S202 OUT ay pin sa Arduino A0Arduino 3V pin sa Arduino AREF pin. Ang isa lamang na kritikal ay ang OUT lead sa light sensor na kailangang pumunta sa isang analog pin. Ang pin-out na ito ay gagana sa aking code bilang nakasulat. Kung gumagamit ka ng hardware watchdog, makikita mo ang aking code na inilalagay ang pintig ng puso sa Arduino pin 2.

Hakbang 5: Ang Arduino Code, Pangunahing Sketch

CrawlSpace_monitor.ino

Hakbang 6: Mga Tala sa Code

Ang mga sumusunod na linya ng code ay lumikha ng mga pagkakataon ng pampainit at tukuyin ang mga parameter ng pagpapatakbo: // Heater (relayPin, onTemp (f), offTemp (f), minMinutes, testInterval (minuto), luxDelta) Heater heater1 = Heater (A1, 38, 43, 20, 1440, 5); Heater heater2 = Heater (A2, 36, 41, 20, 1440, 5); Heater heater3 = Heater (A3, 34, 39, 20, 1440, 5); Heater heater4 = Heater (A4, 32, 37, 20, 1440, 5); (At oo, tinukoy ko ang lahat ng 4 heater kahit na tumatakbo lamang ako ng 3 sa ngayon. Kailangan ko pa ring makakuha ng isa pang relay, ngunit pagkatapos ay idagdag ang ika-4 na pampainit ay maging kasing simple ng pag-plug in dito.) Nag-stagger ako ng kanilang mga temperatura ng pag-trigger, nagsisimula sa 38 degree para sa una at nagtatapos sa 32 para sa wala na ika-4. Ang isa sa mga bagay na nahanap ko noong una kong sinimulan itong pag-cobbling ay magkasama na kailangan kong magbigay ng isang saklaw sa temperatura pati na rin tukuyin ang isang minimum na "burn time", o nag-on at off ang mga ilaw ng pagbibisikleta na parang baliw. Narito binibigyan ko ang bawat isa sa kanila ng 5 degree na pagkalat pati na rin isang 20 minutong minimum na oras ng pagkasunog. Itinakda ko ang agwat ng pagsubok sa 24 na oras at itinakda ang 5 lux bilang ang minimum na ilaw na pagbabasa na kailangan ko upang matukoy ang isang bombilya na gumagana pa rin. Halos lahat ng kailangan ang pag-configure ay narito mismo sa 4 na linya ng code.

Hakbang 7: Ang Arduino Code, Mga Klase

Lumikha ako ng 3 klase para sa proyektong ito. Ang mga ito ay "timer", "heater" at "accumulator". Na may kaunting pag-iisip na dapat kong tiklop ang accumulator sa timer, ngunit hindi ko pa nagagawa. Narito na sila buong: heater.h

timer.h

nagtitipon.h

Hakbang 8: Pagsubaybay sa System

Pagsubaybay sa Sistema
Pagsubaybay sa Sistema

Lumikha ako ng isang solong interface sa dalawang magkakahiwalay na monitor. Ito ay isang interactive session sa serial console. Sa aking kaso gumagamit ako ng Bluefruit EZ-Link upang ma-access ko ang system nang hindi gumagapang sa ilalim ng bahay o sinusubukan na ahas ang isang USB cable sa pagitan ng mga sumali sa sahig! Ang isang karagdagang pakinabang ng EZ-Link ay maaari akong mag-upload ng bagong code ng programa sa Arduino sa Bluetooth din. Ang "tao" na interface ay maaaring ma-access (Bluetooth o pisikal na cable) gamit ang anumang terminal na emulation software, kabilang ang serial ng Arduino IDE monitor Kapag una kang kumonekta, walang tugon, ngunit ang mga pangunahing pagpindot sa "u" (para sa "pag-update") at "t" (para sa "pagsubok") ay magbibigay sa iyo ng output na ipinakita sa shot ng screen. Ang "m" ("monitor") at "s" ("sys check") ay makakapagbigay sa iyo ng parehong data ngunit sa isang hindi gaanong nababasa na format. Ito ay inilaan upang "ma-scrape" ng ibang programa para sa awtomatikong pagpapakita. Pinagsama ko ang isang script ng Python na ginagawa iyon. Anumang iba pang mga key garners ipinapakita ang mensahe ng error. Makakakita ka ng isang halaga para sa "oras ng pagkasunog" - isipin ito tulad ng "bombilya minuto" - 1 bombilya para sa 10 minuto = 10 minuto, 3 bombilya para sa 10 minuto = 30 minuto.

Hakbang 9: Ang Python Script

Ang Python Script
Ang Python Script

crawlspace_gui.py

Hakbang 10: Gagawin Pa rin…

Maaaring hindi ito maganda, o perpekto, ngunit mabisa ito at pinatutunayan ang sarili nito na maaasahan. AT, wala pa akong anumang mga isyu sa frozen na tubo ngayong taglamig !!! Mayroon akong isang listahan ng mga bagay na dapat gawin. Siyempre, ngayon na gumagana ito, maaari ko o hindi kailanman makalibot sa pagtupad ng karamihan sa mga item na ito: Patakbuhin ang Bluetooth sa isa sa aking mga Raspberry Pi's upang makalikha ako ng isang nakatuon na monitor. Alamin ang ilang higit pang Python - pagkatapos ay linisin ang Python interface Ang paghihiwalay ng mga elemento ay hindi sadya at hindi ko maintindihan kung bakit ito naroroon. Magdagdag ng isang interface sa isang bagay tulad ng serbisyo ng Adafruit's IO upang masubaybayan ko ito mula sa kahit saan. Magdagdag ng alertong text message. Lumipat sa isang mas maliit na controller (posibleng isang Metro Mini o isang Trinket Pro?), Hindi gaanong mahal na relay, at mas mahusay na balot. Tanggalin ito sa isang breadboard at papunta sa isang "Perma Proto" board. Mga parameter ng pag-configure sa EEPROM. Ang isang mas maraming butil na interface na magpapahiwatig na --ang mga bombilya ay mabuti, at marahil kahit na magsunog ng oras para sa mga indibidwal na bombilya. Habang natatapos ko ang mga ito babalik ako at i-update ang Instructable na ito.

Hakbang 11: I-update ang 3/16, "permanenteng" Build

I-update ang 3/16,
I-update ang 3/16,
I-update ang 3/16,
I-update ang 3/16,
I-update ang 3/16,
I-update ang 3/16,

Pagkuha ng isang mahusay na pahinga sa malamig na panahon, nakuha ko ang yunit at inilipat ito sa isang mas maliit na controller (nilalayon kong gumamit ng isang Trinket Pro, ngunit may isang Adafruit Metro Mini na nakaupo sa paligid na hindi na-claim ng anumang iba pang proyekto), soldered ito sa isang board ng Perma-Proto, at ilagay ang lahat sa isang mas mahusay na kaso. Batay sa kung gaano ito maaasahan, hindi ko naibalik dito ang watchdog ng hardware. Gumagamit pa rin ako ng 3 lampara / relay kung saan hahawakin ng system ang 4. Ang module ng Bluetooth ay nasa isang soldered na header, kaya maaaring alisin kung kailangan ko ito sa ibang lugar. Walang kinakailangang mga pagbabago sa code upang lumipat sa bagong controller - isang simpleng muling pagsasaayos at pag-load ang tumakbo sa akin sa loob ng ilang minuto. (Ang Metro Mini ay may magkaparehong pinout bilang Arduino Uno at isa ring isang ATMega328 na processor.)

Hakbang 12: I-update ang 12/1/2018 - Maligayang pagdating sa IoT

Ang system ay gumana nang walang kamali-mali para sa amin. Pagkatapos ng dalawang medyo matinding taglamig, WALANG mga nakapirming tubo. Sa katunayan, napapanatili ng system ang mga tubo nang hindi kailanman sinusunog ang higit sa 2 bombilya. Ang pagkakaroon ng ika-3 bombilya sa online ay magandang insurance, ngunit hindi namin kailanman kailangan ito ngayon.

Pagdating sa taon 3 para sa system, nabigo ang module ng Bluetooth. Nagtayo rin kami ng isang bagong bahay, kaya't ang sistema ng pagsubaybay ay nasa labas ng saklaw ng Bluetooth. (Ang lumang bahay ay nananatili para sa isang sandali, ngunit hindi magpakailanman.) Sa pagitan ng oras, marami akong ginagawa sa pinagana ng processor na ESP8266 WiFi; kapwa sa format na Adafruit Feather at sa open-source na format na "NodeMCU". Ang NodeMCU sa pangkalahatan ay matatagpuan sa Amazon ng humigit-kumulang na $ 5 - mas mababa kung bumili ka ng maramihan at / o mula sa isang tulad ng AliExpress.

Pinapanatili ng bagong bersyon na ito ang serial interface, kaya maaari pa rin itong magamit sa isang module ng Bluetooth o direktang koneksyon sa serial na USB at ang nakaraang script ng sawa, subalit, ang bagong bersyon ay may isang web-page interface. Tulad ng nakasulat, kasama dito ang sumusunod na tampok:

Ang isang WiFi network manager upang alisin ang mga kredensyal ng hard-coding ng WiFi.

Ang kakayahang i-update ang firmware nang over-the-air gamit ang Arduino IDE (basta nasa parehong WiFi network ka - tandaan na pagkatapos gawin ang isang pag-upload sa USB sa aparato, kailangan ng pag-reset bago gumana ang mga pag-update ng OTA). Pakiusap na baguhin ang password ng OTA sa linya 6 upang maging natatangi sa iyo !!

Isang web page na nagpapakita ng parehong data na ginagawa ng script ng python, na may awtomatikong pag-refresh bawat minuto. Hindi ko inilagay ang anumang uri ng seguridad sa pahina, dahil ito ay display-only.

Mahahanap mo rito ang bagong code. Tandaan na ang mga pangalan ng pin ay nagbabago kapag lumilipat sa NodeMCU.

Inirerekumendang: