Innehållsförteckning:

Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 steg (med bilder)
Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 steg (med bilder)

Video: Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 steg (med bilder)

Video: Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 steg (med bilder)
Video: МЕГА-подборка СТРАШНЫХ видео с привидениями [2022, часть 1] 2024, November
Anonim
Crawl Space Monitor (aka: No More Frozen Pipes !!)
Crawl Space Monitor (aka: No More Frozen Pipes !!)

Vatten till mitt hus kommer från min brunn genom ett ouppvärmt krypgrund. Allt kök och badrums VVS går också genom detta utrymme. (Inomhus VVS var en slack-on eftertanke i mitten av 70-talet på detta hus!) Jag har använt värmelampor på "lager tank" termostatpluggar för att hålla en temperatur över fryspunkten. Det fanns ett par betydande problem med detta arrangemang: 1 - Ingen synlighet. Den första indikationen på utbrända glödlampor är frysta rör! 2 - Ibland skulle pluggarna inte stängas av. Det gav otäcka överraskningar elräkningen. 3 - Ingen detaljrikedom. Jag behöll 3 lampor "online" (750 watt totalt) och det var en allt eller ingenting -lösning. (2 glödlampor skulle inte alltid hantera det.) Efter att ha introducerats för Arduino och sett några av de saker som andra människor gjorde med det bestämde jag mig för att ge det en virvel. Jag ska erkänna direkt ur rännan att jag skamlöst har fastnat och tweakat provkod från andra människors projekt för att få detta att fungera, men i slutändan har jag skrivit om det mesta. Inledningsvis byggde jag denna "WiFi Weather Station" som jag hittade på Adafruit.com och ändrade den. Istället för att uppdatera en webbplats använde jag Amazon Web Services för att skicka SMS -statusuppdateringar till mig. Jag lade också till kontrollen av några 110V -reläer (https://www.adafruit.com/products/268). Jag blev sedan "smart" och bestämde mig för att "rugga" det - nå - något kortade något och jag fick en puff av den magiska blå röken. Allt stekt… Eftersom jag inte hade någon annan CC3000 WiFi -utbrott gjorde jag saker annorlunda den här gången. Jag byggde den för att övervakas interaktivt via seriellt gränssnitt och lade sedan till ett EZ-Link Bluetooth FTDI-gränssnitt. (Du behöver inte längre dra den bärbara datorn under huset för programuppdateringar !!!) Jag byggde också ett Python -gränssnitt som ansluter till enheten via Bluetooth, frågar regelbundet och visar statusinformation på min Mac. (Det finns också ett "mänskligt gränssnitt" som kan nås av valfri terminalemuleringsprogramvara.) Som ett resultat av omskrivning och borttagning av all WiFi- och RTC-kod har projektet krympt i storlek från över 29K till knappt 10K. Det har också förbättrat tillförlitligheten i den mån hårdvaruvakthunden inte alls har utlöst under de två veckorna den har körts och jag har justerat.

17/2/16 Uppdatering/anmärkning: I ett försök att få korrekt formatering på en del av koden (särskilt inryckningen av Python -koden) gick saker från fula till oanvändbara. Jag är säker på att frågan är på mitt slut någonstans, och jag kommer att försöka ta reda på det. Tills dess har jag lagt till länkar till kodfilerna via DropBox. De ska vara tillgängliga för alla. Om inte, vänligen meddela mig så att jag kan få dem till dig på ett annat sätt!

Steg 1: Problem att lösa

Systemet behövde göra följande för mig: 1 - övervaka temperaturen i krypgrunden. 2 - slå på värmelampor efter behov för att hålla temperaturen över fryspunkten. 3 - testa glödlamporna regelbundet och ge mig synlighet när den inte fungerar. av deras status.4 - ge mig synlighet av temperaturen och systemstatus, inklusive: - kör systemet? - vad är temperaturen NU? - vad är den kallaste temperaturen har fått? - hur många lökar sprang? - hur många lökar testar bra? - vad är min totala tid i "ljusminuter" (aka "bränntid")? 5 - gör allt ovan utan att jag behöver krypa under huset !!! Jag bestämde mig för att det enklaste sättet att testa lampan var med Några andra problem jag ville ta upp var cykeltiden på lamporna. För långsamt, och jag bränner onödig el. För snabbt, och jag riskerar att bränna ut dem från all till- och frånkoppling med tillhörande uppvärmning och avkylning.

Steg 2: Hårdvaran

Hårdvaran
Hårdvaran

2 250 watts värmelampor1 500 watts arbetslampa (en av mina värmelampor försvann, så det här är en stand-in) Arduino UnoDHT22 Temperatursensor/Humitidysensor GA1A12S202 ljussensor PowerSwitch 110V reläer Bluefruit EZ-Link Serial Interface & Programmerare Högteknologiskt fodral (smörgåsstorlek)) Kabelförskruvning 1/2 storlek brödbräda Akrylplatta för brödbräda och ArduinoAssorterade bygeltrådar. Coleman 5-utlopp "verkstadsremsa" Jag använde också en Adafruit Trinket som hårdvaruvakthund, men det har visat sig vara onödigt (jinx, förstås!) Och jag skrev en separat instruerbar om det så jag ska inte upprepa det här. Coleman -pigtailen var ett trevligt fynd, eftersom det gav mig 4 uttag för mina värmelampor PLUS ett uttag för Arduino -strömförsörjningen utan några extra delare eller strömsladdar inblandade. Klassad till hela 15 ampere med en switch och en intern brytare, den kunde hantera allt jag kunde dra genom ett enda uttag.

Steg 3: Tillvägagångssättet

Medan systemet är applikationsbyggt för att sitta och vänta och göra vissa saker relativt långsamt, var det jag inte ville göra att bygga ett system där regulatorn satt i fördröjda () cykler som inte svarade. Jag ville också kunna ändra konfigurationsparametrarna så nära on-the-fly som jag kunde komma-absolut inte på ett sätt som krävde omskrivning av kod eller mass-sök-och-ersättningsoperationer på källan. hittade Bill Earls mest utmärkta artiklar om "Multitasking the Arduino" (börja här: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) och blev upptagen. Genom att skapa "timer" och "värmare" klasser kunde jag göra alla tidsfunktioner jag ville utan att använda fördröjning () (med bara några undantag) och konfigurera lamporna ("värmare") med en enda kodrad för varje ett.

Steg 4: Anslut det

Koppla upp det
Koppla upp det
Koppla upp det
Koppla upp det

Fritzing-diagrammet inkluderar inte Bluefruit EZ-LinkArduino 5V & Ground to breadboard-bussenDHT22-stift 1 till 5V-bussDHT22-stift 2 till Arduino-stift 7DHT22-stift 4 till jordbuss10K-motstånd mellan DHT22-stift 1 och 2GA1A12S202 VCC-stift till 5V-buss bussGA1A12S202 UT -stift till Arduino A0Arduino 3V -stift till Arduino AREF -pinReläjord leder till markbussRelä 1 strömkabel till Arduino A1Relay 2 -strömkabel till Arduino A2Relay 3 -strömkabel till Arduino A3Relay 4 -strömkabel till Arduino A4De flesta av dessa anslutningar kan önskas om. Den enda som är kritisk är OUT -ledningen på ljussensorn som måste gå till en analog stift. Denna pin-out fungerar med min kod som skriven. Om du använder maskinvaruvakten ser du att min kod sätter hjärtslaget på Arduino pin 2.

Steg 5: Arduino -koden, huvudskiss

CrawlSpace_monitor.ino

Steg 6: Anteckningar om koden

Följande kodrader skapar värmarens instanser och definierar driftparametrarna: // Heater (relayPin, onTemp (f), offTemp (f), minMinutes, testInterval (minutes), luxDelta) Heater värmare1 = Heater (A1, 38, 43, 20, 1440, 5); Värmare värmare2 = Värmare (A2, 36, 41, 20, 1440, 5); Värmare värmare3 = Värmare (A3, 34, 39, 20, 1440, 5); Värmare värmare4 = Värmare) var så enkelt som att koppla in den.) Jag förskjuter deras utlösningstemperaturer, börjar vid 38 grader för det första och slutar på 32 för det obefintliga 4: an. En av de saker jag hittade när jag började kobbla ihop det här var att jag behövde ge ett intervall på temperaturen samt definiera en minsta "brinntid", eller så cyklade jag på och av lampor som en galning. Här ger jag var och en av dem en 5 -graders spridning samt en minsta brinntid på 20 minuter. Jag ställde in testintervallet till 24 timmar och ställde in 5 lux som minsta ljusavläsning jag behövde för att fastställa att en glödlampa fortfarande fungerade. Nästan allt som behöver konfigureras finns här i dessa 4 kodrader.

Steg 7: Arduino -koden, klasser

Jag skapade 3 klasser för detta projekt. De var "timer", "värmare" och "ackumulator". Med lite mer eftertanke borde jag kunna fälla ackumulator till timer, men jag har inte gjort det än. Här är de i sin helhet: heater.h

timer. h

ackumulator.h

Steg 8: Övervakning av systemet

Övervakning av systemet
Övervakning av systemet

Jag skapade ett enda gränssnitt till två separata bildskärmar. Det är en interaktiv session över seriekonsolen. I mitt fall använder jag Bluefruit EZ-Link så att jag kan komma åt systemet utan att krypa under huset eller försöka få en USB-kabel mellan golvbjälkarna! En extra fördel med EZ-Link är att jag också kan ladda upp ny programkod till Arduino via Bluetooth. Det "mänskliga" gränssnittet kan nås (Bluetooth eller fysisk kabel) med valfri terminalemuleringsprogramvara, inklusive Arduino IDE: s seriella övervaka. När du inledningsvis ansluter är det inget svar, men tangenten trycker på "u" (för "uppdatering") och "t" (för "test") ger dig utgången som visas i skärmdumpen. "m" ("monitor") och "s" ("sys check") ger dig samma data men i ett mycket mindre läsbart format. Dessa är avsedda att "skrapas" av ett annat program för automatisk visning. Jag satte ihop ett Python -skript som gör just det. Alla andra nycklar får felmeddelandet som visas. Du kommer att se ett värde för "brinntid" - tänk på det här som "glödlampminuter" - 1 lampa i 10 minuter = 10 minuter, 3 lampor i 10 minuter = 30 minuter.

Steg 9: Python -skriptet

Python -skriptet
Python -skriptet

crawlspace_gui.py

Steg 10: Fortfarande att göra …

Det kanske inte är vackert eller perfekt, men det är effektivt och visar sig vara pålitligt. OCH, jag har inte haft några frysta rörproblem ännu i vinter !!! Jag har en träfflista över saker att göra. Naturligtvis, nu när det fungerar kan jag kanske eller kanske aldrig komma runt för att utföra de flesta av dessa saker: Få Bluetooth att köra på en av mina Raspberry Pi så att jag kan skapa en dedikerad bildskärm. Lär dig lite mer Python - sedan städa upp Python gränssnitt. Att separering av element är inte avsiktligt och jag förstår inte varför det finns. Lägg till ett gränssnitt till något som Adafruits IO -tjänst så att jag kan övervaka det var som helst. Lägg till textmeddelande. Flytta till en mindre kontroller (eventuellt en Metro Mini eller en Trinket Pro?), Billigare reläer och bättre förpackningar. Ta bort den från en brödbräda och på en "Perma Proto" -platta. möjligen till och med bränntid för de enskilda lamporna. När jag får dem gjort kommer jag tillbaka och uppdaterar denna instruerbara.

Steg 11: Uppdatera 3/16, "permanent" Build

Uppdatering 3/16,
Uppdatering 3/16,
Uppdatering 3/16,
Uppdatering 3/16,
Uppdatering 3/16,
Uppdatering 3/16,

Jag fick en bra paus i det kalla vädret, jag har hämtat enheten och flyttat den till en mindre kontroller (jag hade tänkt använda en Trinket Pro, men hade en Adafruit Metro Mini sittande utan krav på något annat projekt), lödde upp den på en Perma-Proto-tavla, och sätt det hela i ett bättre fall. Baserat på hur tillförlitlig den har varit lade jag inte tillbaka hårdvaruvakten på den. Jag använder fortfarande bara 3 lampor/reläer där systemet kommer att hantera 4. Bluetooth -modulen är på en lödad rubrik, så kan tas bort om jag behöver det någon annanstans. Det var inga kodändringar som var nödvändiga för att flytta till den nya handkontrollen - en enkel omkompilering och laddning fick mig att köra på några minuter. (Metro Mini har en identisk pinout som Arduino Uno och är också en ATMega328 -processor.)

Steg 12: Uppdatering 2018-12-12 - Välkommen till IoT

Systemet har fungerat felfritt för oss. Efter två ganska hårda vintrar, INGA frysta rör. Faktum är att systemet kunde underhålla rören utan att någonsin bränna mer än 2 glödlampor. Att ha den tredje lampan online var en trevlig försäkring, men vi har aldrig behövt den hittills.

När det kom till år 3 för systemet misslyckades Bluetooth -modulen. Vi byggde också ett nytt hus, så övervakningssystemet ligger långt utanför Bluetooth -räckvidden. (Det gamla huset stannar kvar ett tag, men inte för alltid.) Under tiden har jag gjort mycket med ESP8266 WiFi -aktiverad processor; både i Adafruit Feather-format och i "NodeMCU" -formatet med öppen källkod. NodeMCU kan i allmänhet hittas på Amazon för cirka $ 5 - mycket mindre om du köper i bulk och/eller från någon som AliExpress.

Denna nya version behåller det seriella gränssnittet, så det kan fortfarande användas med en Bluetooth-modul eller direkt USB-seriell anslutning och det tidigare python-skriptet, men den nya versionen har ett webbsidegränssnitt. Som skrivet innehåller den följande funktion:

En WiFi-nätverkshanterare för att eliminera hårdkodande WiFi-referenser.

Möjligheten att uppdatera den fasta programvaran via luften med Arduino IDE (så länge du är i samma WiFi-nätverk-notera att efter att du har laddat upp en USB-enhet till enheten krävs en återställning innan OTA-uppdateringar fungerar). Vänligen ändra OTA -lösenordet på rad 6 för att vara unikt för dig !!

En webbsida som visar samma data som python -skriptet gör, med en automatisk uppdatering varje minut. Jag lade inte någon form av säkerhet på sidan, eftersom den bara är display.

Du hittar den nya koden här. Observera att stiftnamnen ändras när du flyttar till NodeMCU.

Rekommenderad: