Indholdsfortegnelse:

Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 trin (med billeder)
Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 trin (med billeder)

Video: Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 trin (med billeder)

Video: Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 trin (med billeder)
Video: Caravan test at -25° . Overnight stay in winter. How not to freeze? 2024, November
Anonim
Crawl Space Monitor (aka: No More Frozen Pipes !!)
Crawl Space Monitor (aka: No More Frozen Pipes !!)

Vand til mit hus kommer fra min brønd gennem et uopvarmet kravlerum. Alt køkken og badeværelse VVS løber også gennem dette rum. (Indendørs VVS var en slap-on eftertanke i midten af 70'erne på dette hus!) Jeg har brugt varmelamper på "lager tank" termostatiske stik til at opretholde en temperatur over frysepunktet. Der var et par betydelige problemer med dette arrangement: 1 - Ingen synlighed. Den første indikation af udbrændte pærer er frosne rør! 2 - Nogle gange lukker propperne ikke af. Det skabte for grimme overraskelser den elektriske regning. 3 - Ingen detaljerede oplysninger. Jeg beholdt 3 pærer "online" (750 watt i alt), og det var en alt eller intet løsning. (2 pærer ville ikke altid klare det.) Efter at jeg blev introduceret til Arduino og havde set nogle af de ting, andre mennesker gjorde med det, besluttede jeg, at jeg ville give det en hvirvel. Jeg vil indrømme lige ud af renden, at jeg skamløst har fanget og tweaket prøvekode fra andres projekter for at få dette til at fungere, selvom jeg i sidste ende har skrevet det meste igen. I første omgang byggede jeg denne "WiFi Weather Station", som jeg fandt på Adafruit.com og ændret det. I stedet for at opdatere et websted, brugte jeg Amazon Web Services til at sende mig SMS -statusopdateringer. Jeg tilføjede også kontrollen med nogle 110V relæer (https://www.adafruit.com/products/268). Jeg blev derefter "smart" og besluttede at "rugged" det - nå - noget kortede noget, og jeg fik et pust af den magiske blå røg. Alt stegt … Da jeg ikke havde endnu et CC3000 WiFi -breakout, gjorde jeg tingene anderledes denne gang. Jeg byggede den til at blive overvåget interaktivt via serielt interface og tilføjede derefter et EZ-Link Bluetooth FTDI-interface. (Du behøver ikke længere trække den bærbare computer under huset for softwareopdateringer !!!) Jeg har også bygget en Python -grænseflade, der opretter forbindelse til enheden via Bluetooth, forespørger regelmæssigt og viser statusoplysninger på min Mac. (Der er også en "human interface", der kan tilgås af enhver terminalemuleringssoftware.) Som et resultat af omskrivning og fjernelse af alle WiFi- og RTC-koden er projektet skrumpet i størrelse fra over 29K til knap 10K. Det har også forbedret pålideligheden i det omfang, hardwareovervågningen slet ikke har udløst i de par uger, den har kørt, og jeg har justeret.

2/17/16 Opdatering/note: I et forsøg på at få korrekt formatering på nogle af koden (især indrykkelse af Python -koden) gik tingene fra grimme til ubrugelige. Jeg er sikker på, at problemet er på min ende et sted, og jeg vil bestræbe mig på at finde ud af det. Indtil da har jeg tilføjet links til kodefilerne via DropBox. De skal være tilgængelige for alle. Hvis ikke, så lad mig det vide, så jeg kan få dem til dig på en anden måde!

Trin 1: Problemer, der skal løses

Systemet havde brug for at gøre følgende ting for mig: 1 - overvåge temperaturen i krybekælderen. 2 - tænde varmelamper efter behov for at opretholde temperaturen over frysepunktet. 3 - når de ikke er i drift, skal du regelmæssigt teste pærerne og give mig synlighed af deres status.4 - giv mig synlighed af temperaturen og systemstatus, herunder: - kører systemet? - hvad er temperaturen NU? - hvad er den koldeste temperaturen fik? - hvor mange løg løb? - hvor mange pærer tester godt? - hvad er min samlede tid i "lette minutter" (alias "brændtid")? 5 - gør alt ovenstående uden at jeg behøver at kravle under huset !!! Jeg besluttede, at den nemmeste måde at teste pærebetjening var med Nogle andre problemer, jeg ville behandle, var cyklustiden på lysene. For langsom, og jeg brænder unødvendig elektricitet. For hurtigt, og jeg risikerer at brænde dem ud af al tænding og slukning med den tilhørende opvarmning og afkøling.

Trin 2: Hardware

Hardwareen
Hardwareen

2 250 watt varmelamper 1 500 watts arbejdslampe (en af mine varmelamper forsvandt, så dette er en stand-in) Arduino UnoDHT22 temperatur/fugtighedsføler GA1A12S202 lyssensor PowerSwitch 110V relæer Bluefruit EZ-Link Serial Interface & Programmer Højteknologisk etui (sandwich størrelse Rubbermaid kar) Kabelforskruning 1/2 størrelse brødbræt Akrylplade til brødbræt og ArduinoAssorterede jumperwires. Coleman 5-outlet "workshop strip" Jeg brugte også en Adafruit Trinket som hardware vagthund, men det har vist sig at være unødvendigt (jinx, selvfølgelig!) Og jeg skrev en separat instruerbar om det, så jeg vil ikke gentage det her. Coleman -grisehalen var et dejligt fund, da det gav mig 4 stikkontakter til mine varmelamper PLUS en stikkontakt til Arduino -strømforsyningen uden yderligere splittere eller strømstik involveret. Bedømt til hele 15 ampere med en switch og en intern breaker, den kunne klare alt, hvad jeg kunne trække gennem en enkelt stikkontakt.

Trin 3: Fremgangsmåden

Mens systemet er applikationsbygget til at sidde og vente og gøre nogle ting relativt langsomt, var det, jeg ikke ville gøre, at bygge et system, hvor controlleren sad i forsinkede () cyklusser, der ikke reagerede. Jeg ville også være i stand til at ændre konfigurationsparametrene så tæt på on-the-fly som jeg kunne komme-bestemt ikke på en måde, der krævede omskrivning af kode eller massesøgning og udskiftning af operationer på kilden. fandt Bill Earls mest fremragende artikler om "Multitasking the Arduino" (start her: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) og fik travlt. Ved at oprette "timer" og "varmelegeme" klasser kunne jeg udføre alle de timefunktioner, jeg ønskede uden at bruge forsinkelse () (med kun et par undtagelser) og konfigurere pærerne ("varmelegemer") med en enkelt linje kode for hver en.

Trin 4: Tilslutning

Kabelføring
Kabelføring
Kabelføring
Kabelføring

Fritzing-diagrammet inkluderer ikke Bluefruit EZ-LinkArduino 5V & jorden til brødbrætbussenDHT22 pin 1 til 5V busDHT22 pin 2 til Arduino pin 7DHT22 pin 4 til jordbus10K modstand mellem DHT22 ben 1 og 2GA1A12S202 VCC ben til 5V busGA1A12S202 GND pin til jord busGA1A12S202 OUT pin til Arduino A0Arduino 3V pin til Arduino AREF pinRelay Jord fører til Ground busRelay 1 strømledning til Arduino A1Relay 2 strømledning til Arduino A2Relay 3 strømledning til Arduino A3Relay 4 strømledning til Arduino A4De fleste af disse forbindelser kan omarrangeres. Den eneste, der er kritisk, er OUT -ledningen på lyssensoren, der skal gå til en analog pin. Denne pin-out fungerer med min kode som skrevet. Hvis du bruger hardware-vagthund, vil du se, at min kode sætter hjerteslaget ud på Arduino pin 2.

Trin 5: Arduino -koden, hovedskitsen

CrawlSpace_monitor.ino

Trin 6: Bemærkninger om koden

Følgende kodelinjer opretter varmeapparatets forekomster og definerer driftsparametrene: // Heater (relayPin, onTemp (f), offTemp (f), minMinutes, testInterval (minutes), luxDelta) Varmelegeme1 = Heater (A1, 38, 43, 20, 1440, 5); Varmervarmer2 = Varmer (A2, 36, 41, 20, 1440, 5); Varmervarmer3 = Varmer (A3, 34, 39, 20, 1440, 5); Varmervarmer4 = Varmer) være så enkel som at tilslutte den.) Jeg forskyder deres udløser temperaturer, starter ved 38 grader for det første og slutter ved 32 for det ikke-eksisterende 4.. En af de ting, jeg fandt, da jeg først begyndte at samle dette sammen, var, at jeg var nødt til at give et interval på temperaturen samt definere et minimum "brændetid", eller jeg cyklede lys og tænder som en gal. Her giver jeg hver af dem en 5 graders spredning samt en minimumsbrændetid på 20 minutter. Jeg indstillede testintervallet til 24 timer og indstillede 5 lux som den mindste lysaflæsning, jeg havde brug for for at bestemme, at en pære stadig fungerede. Stort set alt, hvad der skal konfigureres, er lige her i disse 4 kodelinjer.

Trin 7: Arduino -koden, klasser

Jeg lavede 3 klasser til dette projekt. De var "timer", "varmelegeme" og "akkumulator". Med lidt mere eftertanke skulle jeg være i stand til at folde akkumulator til timer, men det har jeg ikke endnu. Her er de fuldt ud: heater.h

timer. h

akkumulator.h

Trin 8: Overvågning af systemet

Overvågning af systemet
Overvågning af systemet

Jeg oprettede en enkelt grænseflade til to separate skærme. Det er en interaktiv session over den serielle konsol. I mit tilfælde bruger jeg Bluefruit EZ-Link, så jeg kan få adgang til systemet uden at kravle under huset eller forsøge at slange et USB-kabel ind mellem gulvbjælkerne! En ekstra fordel ved EZ-Link er, at jeg også kan uploade ny programkode til Arduino via Bluetooth. Den "menneskelige" grænseflade kan tilgås (Bluetooth eller fysisk kabel) med enhver terminalemuleringssoftware, herunder Arduino IDE's serielle overvåge. Når du i første omgang opretter forbindelse, er der intet svar, men tasten trykker på "u" (for "opdatering") og "t" (for "test") får dig output vist i skærmbilledet. "m" ("monitor") og "s" ("sys check") giver dig de samme data, men i et meget mindre læsbart format. Disse er beregnet til at blive "skrabet" af et andet program til automatisk visning. Jeg sammensatte et Python -script, der gør netop det. Enhver anden nøgle får fejlmeddelelsen vist. Du vil se en værdi for "brændetid" - tænk på dette som "pære minutter" - 1 pære i 10 minutter = 10 minutter, 3 pærer i 10 minutter = 30 minutter.

Trin 9: Python -scriptet

Python -scriptet
Python -scriptet

crawlspace_gui.py

Trin 10: Stadig at gøre …

Det er måske ikke smukt eller perfekt, men det er effektivt og viser sig at være pålideligt. OG, jeg har ikke haft problemer med frosne rør endnu i vinter !!! Jeg har en hit-liste over ting at lave. Selvfølgelig, nu hvor det virker, kommer jeg måske eller måske aldrig til at udføre de fleste af disse ting: Få Bluetooth til at køre på en af mine Raspberry Pi'er, så jeg kan oprette en dedikeret skærm. Lær mere Python - ryd derefter op i Python grænseflade. Denne adskillelse af elementer er ikke med vilje, og jeg forstår ikke, hvorfor det er der. Tilføj en grænseflade til noget som Adafruit's IO -service, så jeg kan overvåge det hvor som helst. Tilføj sms -besked. Flyt til en mindre controller (muligvis en Metro Mini eller en Trinket Pro?), Billigere relæer og bedre emballage. Tag det af et brødbræt og ind på et "Perma Proto" -bord. muligvis endda brænde tid for de enkelte pærer. Da jeg får dem gjort, vender jeg tilbage og opdaterer denne Instructable.

Trin 11: Opdater 3/16, "permanent" build

Opdater 3/16,
Opdater 3/16,
Opdater 3/16,
Opdater 3/16,
Opdater 3/16,
Opdater 3/16,

Da jeg fik en god pause i det kolde vejr, har jeg hentet enheden og flyttet den til en mindre controller (jeg havde tænkt mig at bruge en Trinket Pro, men havde en Adafruit Metro Mini siddende uden krav på noget andet projekt), lod den op på et Perma-Proto-bord, og sæt det hele i en bedre sag. Baseret på hvor pålidelig den har været, satte jeg ikke hardware -vagthunden tilbage på den. Jeg bruger stadig kun 3 lamper/relæer, hvor systemet kan håndtere 4. Bluetooth -modulet er på et loddet hoved, så det kan fjernes, hvis jeg har brug for det et andet sted. Der var ingen kodeændringer nødvendige for at flytte til den nye controller - en simpel rekompilering og indlæsning fik mig til at køre i løbet af få minutter. (Metro Mini har en identisk pinout som Arduino Uno og er også en ATMega328 -processor.)

Trin 12: Opdater 12/1/2018 - Velkommen til IoT

Systemet har fungeret upåklageligt for os. Efter to temmelig alvorlige vintre, INGEN frosne rør. Faktisk var systemet i stand til at vedligeholde rørene uden nogensinde at brænde mere end 2 pærer. At have den tredje pære online var en god forsikring, men vi har aldrig nogensinde haft brug for den.

Når jeg kom ind i år 3 for systemet, mislykkedes Bluetooth -modulet. Vi byggede også et nyt hus, så overvågningssystemet ligger langt uden for Bluetooth -rækkevidde. (Det gamle hus holder sig oppe et stykke tid, men ikke for altid.) I den mellemliggende tid har jeg gjort meget med ESP8266 WiFi -aktiveret processor; både i Adafruit Feather-format og i open-source "NodeMCU" -formatet. NodeMCU kan generelt findes på Amazon for omkring $ 5 - meget mindre, hvis du køber i bulk og/eller fra en person som AliExpress.

Denne nye version opretholder den serielle grænseflade, så den kan stadig bruges med et Bluetooth-modul eller direkte USB seriel forbindelse og det tidligere python-script, men den nye version har en webside-grænseflade. Som skrevet indeholder den følgende funktion:

En WiFi-netværksmanager til at eliminere hardkodende WiFi-legitimationsoplysninger.

Muligheden for at opdatere firmwaren over-the-air ved hjælp af Arduino IDE (så længe du er på det samme WiFi-netværk-Bemærk, at efter at du har foretaget en USB-upload til enheden, er en nulstilling nødvendig, før OTA-opdateringer fungerer). SKIFT venligst OTA -adgangskoden på linje 6 for at være unik for dig !!

En webside, der viser de samme data, som python -scriptet gør, med en automatisk opdatering hvert minut. Jeg lagde ikke nogen form for sikkerhed på siden, fordi den kun er display.

Du kan finde den nye kode her. Bemærk, at pin -navnene ændres, når du flytter til NodeMCU.

Anbefalede: