Innholdsfortegnelse:
- Trinn 1: Problemer å løse
- Trinn 2: Maskinvaren
- Trinn 3: Tilnærmingen
- Trinn 4: Koble den til
- Trinn 5: Arduino -koden, hovedskisse
- Trinn 6: Merknader om koden
- Trinn 7: Arduino -koden, klasser
- Trinn 8: Overvåke systemet
- Trinn 9: Python -skriptet
- Trinn 10: Fortsatt å gjøre …
- Trinn 11: Oppdater 3/16, "permanent" build
- Trinn 12: Oppdater 12/1/2018 - Velkommen til IoT
Video: Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
Vann til huset mitt kommer fra brønnen min gjennom et uoppvarmet krypkjeller. Alt av kjøkken- og baderørene går også gjennom dette rommet. (Innendørs rørleggerarbeid var en slap-afterthought på midten av 70-tallet på dette huset!) Jeg har brukt varmelamper på "lager tank" termostatiske plugger for å opprettholde en temperatur over frysepunktet. Det var et par betydelige problemer med denne ordningen: 1 - Ingen synlighet. Den første indikasjonen på utbrente pærer er frosne rør! 2 - Noen ganger vil pluggene ikke slå seg av. Det ga elektriske regninger for stygge overraskelser. 3 - Ingen detaljrikdom. Jeg beholdt 3 pærer "online" (totalt 750 watt), og det var en alt eller ingenting -løsning. (2 pærer ville ikke alltid håndtere det.) Etter å ha blitt introdusert for Arduino, og sett noen av tingene andre gjorde med det, bestemte jeg meg for at jeg ville gi det en virvel. Jeg vil innrømme rett ut av sjakten at jeg har skamløst fanget og justert prøvekoden fra andres prosjekter for å få dette til å fungere, selv om jeg til slutt har skrevet det meste på nytt. I utgangspunktet bygde jeg denne "WiFi Weather Station" som jeg fant på Adafruit.com og endret den. I stedet for å oppdatere et nettsted, brukte jeg Amazon Web Services til å sende meg statusstatusoppdateringer. Jeg har også lagt til kontrollen på noen 110V -reléer (https://www.adafruit.com/products/268). Jeg ble deretter "smart" og bestemte meg for å "ruggedize" det - vel - noe kortsluttet noe, og jeg fikk en pust av den magiske blå røyken. Alt stekt … Da jeg ikke hadde nok CC3000 WiFi -utbrudd, gjorde jeg ting annerledes denne gangen. Jeg bygde den for å bli overvåket interaktivt via serielt grensesnitt og deretter lagt til et EZ-Link Bluetooth FTDI-grensesnitt. (Ikke mer å dra den bærbare datamaskinen under huset for programvareoppdateringer !!!) Jeg bygde også et Python -grensesnitt som kobles til enheten via Bluetooth, spør regelmessig om det og viser statusinformasjon på min Mac. (Det er også et "menneskelig grensesnitt" som kan nås av hvilken som helst terminalemuleringsprogramvare.) Som et resultat av omskriving og fjerning av all WiFi- og RTC-koden, har prosjektet krympet i størrelse fra over 29K til knapt 10K. Det har også forbedret påliteligheten i den grad at maskinvarevakten ikke har utløst i det hele tatt i løpet av de par ukene den har kjørt, og jeg har justert.
17/2/16 Oppdatering/merknad: I et forsøk på å få riktig formatering på noen av koden (spesielt innrykk av Python -koden), gikk ting fra stygg til ubrukelig. Jeg er sikker på at problemet er på slutten et sted, og jeg skal prøve å finne det ut. Frem til da har jeg lagt til lenker til kodefilene via DropBox. De skal være tilgjengelige for alle. Hvis ikke, vennligst gi meg beskjed så jeg kan få dem til deg på en annen måte!
Trinn 1: Problemer å løse
Systemet trengte å gjøre følgende for meg: 1 - overvåke temperaturen i krypkjelleren. statusen sin. 4 - gi meg synlighet av temperaturen og systemstatusen, inkludert: - kjører systemet? - hva er temperaturen NÅ? - hva er den kaldeste temperaturen har fått? - hvor mange pærer løp? - hvor mange pærer tester bra? - hva er min totale tid i "lysminutter" (aka "brenntid")? 5 - gjør alt ovenfor uten at jeg trenger å krype under huset !!! Jeg bestemte meg for at den enkleste måten å teste pæreoperasjon var med Noen andre problemer jeg ønsket å ta opp var syklusen på lysene. For sakte, og jeg brenner unødvendig strøm. For fort, og jeg risikerer å brenne dem ut av alt på og av med tilhørende oppvarming og avkjøling.
Trinn 2: Maskinvaren
2 250 watts varmelamper 1 500 watts arbeidslampe (en av varmelampene mine forsvant, så dette er en stand-in) Arduino UnoDHT22 temperatur-/fuktighetssensor GA1A12S202 lyssensor PowerSwitch 110V reléer Bluefruit EZ-Link serielt grensesnitt og programmerer Høyteknologisk etui (sandwichstørrelse Rubbermaid tub) Kabelgjennomføring 1/2 størrelse brødbrett Akrylplate for brødbrett og ArduinoAssorterte jumperwires. Coleman 5-uttak "verkstedstripe" Jeg brukte også en Adafruit Trinket som maskinvareovervåking, men det har vist seg å være unødvendig (jinx, selvfølgelig!) Og jeg skrev en egen instruks om det, så jeg skal ikke gjenta det her. Coleman -grisehale var et fint funn, da det ga meg 4 uttak for varmelampene mine PLUS et uttak for Arduino -strømforsyningen uten at det var flere splittere eller strømbånd involvert. Vurdert til hele 15 ampere med en bryter og en intern bryter, den kunne håndtere alt jeg kunne trekke gjennom et enkelt uttak.
Trinn 3: Tilnærmingen
Mens systemet er applikasjonsbygd for å sitte og vente og gjøre noen ting relativt sakte, var det jeg ikke ønsket å gjøre å bygge et system der kontrolleren satt i forsinkede () sykluser som ikke reagerte. Jeg ønsket også å være i stand til å endre konfigurasjonsparameterne så nær flygen jeg kunne komme-absolutt ikke på en måte som krevde omskriving av kode eller massesøk-og-erstatningsoperasjoner på kilden. fant Bill Earls mest utmerkede artikler om "Multitasking the Arduino" (start her: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) og ble opptatt. Ved å opprette "timer" og "varmeapparat" klasser klarte jeg å gjøre alle timefunksjonene jeg ønsket uten å bruke forsinkelse () (med bare et par unntak) og konfigurere pærene ("varmeovner") med en enkelt kodelinje for hver en.
Trinn 4: Koble den til
Fritzing-diagrammet inkluderer ikke Bluefruit EZ-LinkArduino 5V & Ground til brødbrettbussenDHT22 pin 1 til 5V bussDHT22 pin 2 til Arduino pin 7DHT22 pin 4 til Ground bus10K motstand mellom DHT22 pins 1 og 2GA1A12S202 VCC pin til 5V busGA1A12S202 GND pin til Ground bussGA1A12S202 OUT -pinne til Arduino A0Arduino 3V -pinne til Arduino AREF -pinRelé Jordledninger til bakkebussRelé 1 -strømledning til Arduino A1Relay 2 -strømledning til Arduino A2Relay 3 -strømledning til Arduino A3Relay 4 -strømledning til Arduino A4 De fleste av disse tilkoblingene kan velges. Den eneste som er kritisk er at OUT -ledningen på lyssensoren må gå til en analog pin. Denne pin-out fungerer med koden min som skrevet. Hvis du bruker maskinvarevakten, vil du se at koden min setter hjerteslag på Arduino pin 2.
Trinn 5: Arduino -koden, hovedskisse
CrawlSpace_monitor.ino
Trinn 6: Merknader om koden
Følgende kodelinjer oppretter forekomster av varmeren og definerer driftsparametrene: // Heater (relayPin, onTemp (f), offTemp (f), minMinutes, testInterval (minutes), luxDelta) Varmeapparat1 = 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å enkelt som å koble den til.) Jeg forskjøver utløser-temperaturene deres, starter ved 38 grader for den første og slutter på 32 for den ikke-eksisterende fjerde. En av tingene jeg fant da jeg først begynte å kobbe dette sammen var at jeg trengte å gi et område på temperaturen samt definere en minimum "brenntid", eller jeg syklet lys av og på som en galning. Her gir jeg hver av dem en 5 graders spredning samt en minimum 20 minutters brenntid. Jeg satte testintervallet til 24 timer og satte 5 lux som minimum lysavlesning jeg trengte for å finne ut at en pære fortsatt fungerte. Stort sett alt som trenger konfigurering er her i disse 4 kodelinjene.
Trinn 7: Arduino -koden, klasser
Jeg opprettet 3 klasser for dette prosjektet. De var "timer", "varmeapparat" og "akkumulator". Med litt mer tanke burde jeg kunne kaste akkumulator til timer, men jeg har ikke gjort det ennå. Her er de fullt ut: heater.h
timer. h
akkumulator.h
Trinn 8: Overvåke systemet
Jeg laget et enkelt grensesnitt til to separate skjermer. Det er en interaktiv økt over seriekonsollen. I mitt tilfelle bruker jeg Bluefruit EZ-Link slik at jeg kan få tilgang til systemet uten å krype under huset eller prøve å slange en USB-kabel mellom gulvbjelkene! En ekstra fordel med EZ-Link er at jeg også kan laste opp ny programkode til Arduino via Bluetooth. Det "menneskelige" grensesnittet kan nås (Bluetooth eller fysisk kabel) med hvilken som helst terminalemuleringsprogramvare, inkludert Arduino IDEs serielle Observere. Når du først kobler til, er det ingen respons, men tastetrykket "u" (for "oppdatering") og "t" (for "test") vil gi deg utgangen som vises i skjermbildet. "m" ("monitor") og "s" ("sys check") gir deg de samme dataene, men i et mye mindre lesbart format. Disse er ment å bli "skrapt" av et annet program for automatisk visning. Jeg satte sammen et Python -skript som gjør nettopp det. Enhver annen nøkkel får feilmeldingen som vises. Du vil se en verdi for "brenntid" - tenk på dette som "pære minutter" - 1 pære i 10 minutter = 10 minutter, 3 pærer i 10 minutter = 30 minutter.
Trinn 9: Python -skriptet
crawlspace_gui.py
Trinn 10: Fortsatt å gjøre …
Det er kanskje ikke pent eller perfekt, men det er effektivt og viser seg å være pålitelig. OG, jeg har ikke hatt noen frosne rørproblemer ennå i vinter !!! Jeg har en hit-liste over ting å gjøre. Selvfølgelig, nå som det fungerer, kan jeg kanskje eller aldri komme meg rundt for å oppnå de fleste av disse elementene: Få Bluetooth til å kjøre på en av mine Raspberry Pi, så jeg kan lage en dedikert skjerm. Lær litt mer Python - deretter rydde opp i Python grensesnitt. Denne separasjonen av elementer er ikke med vilje, og jeg forstår ikke hvorfor den er der. Legg til et grensesnitt for noe som Adafruit's IO -tjeneste, slik at jeg kan overvåke det hvor som helst. Legg til tekstmeldingvarsel. Flytt til en mindre kontroller (muligens en Metro Mini eller en Trinket Pro?), Rimeligere reléer og bedre emballasje. Ta den av et brødbrett og opp på et "Perma Proto" -bord. muligens til og med brenntid for de enkelte pærene. Etter hvert som jeg får dem gjort, kommer jeg tilbake og oppdaterer denne instruksjonsboken.
Trinn 11: Oppdater 3/16, "permanent" build
Da jeg fikk en god pause i det kalde været, har jeg hentet enheten og flyttet den til en mindre kontroller (jeg hadde tenkt å bruke en Trinket Pro, men hadde en Adafruit Metro Mini sittende uten krav på andre prosjekter), loddet den opp på et Perma-Proto-brett, og sett det hele i et bedre tilfelle. Basert på hvor pålitelig den har vært, la jeg ikke maskinvarevakten tilbake på den. Jeg bruker fremdeles bare 3 lamper/reléer der systemet skal håndtere 4. Bluetooth -modulen er på en loddet overskrift, så den kan fjernes hvis jeg trenger den et annet sted. Det var ingen kodeendringer som var nødvendige for å flytte til den nye kontrolleren - en enkel rekompilering og lasting fikk meg i gang på få minutter. (Metro Mini har en identisk pinout som Arduino Uno og er også en ATMega328 -prosessor.)
Trinn 12: Oppdater 12/1/2018 - Velkommen til IoT
Systemet har fungert feilfritt for oss. Etter to ganske alvorlige vintre, INGEN frosne rør. Faktisk var systemet i stand til å vedlikeholde rørene uten noen gang å brenne mer enn 2 pærer. Å ha den tredje pæren på nettet var en hyggelig forsikring, men vi har aldri trengt den hittil.
Når jeg kom inn i år 3 for systemet, mislyktes Bluetooth -modulen. Vi bygde også et nytt hus, så overvåkingssystemet ligger godt utenfor Bluetooth -området. (Det gamle huset holder seg oppe en stund, men ikke for alltid.) I mellomtiden har jeg gjort mye med ESP8266 WiFi -aktivert prosessor; både i Adafruit Feather-format og i "NodeMCU" -formatet med åpen kildekode. NodeMCU kan vanligvis finnes på Amazon for rundt $ 5 - mye mindre hvis du kjøper i bulk og/eller fra noen som AliExpress.
Denne nye versjonen opprettholder det serielle grensesnittet, så det kan fortsatt brukes med en Bluetooth-modul eller direkte USB-seriell tilkobling og det forrige python-skriptet, men den nye versjonen har et web-grensesnitt. Som skrevet inneholder den følgende funksjon:
En WiFi-nettverksbehandling for å eliminere hardkodende WiFi-legitimasjon.
Muligheten til å oppdatere fastvaren over-the-air ved hjelp av Arduino IDE (så lenge du er på det samme WiFi-nettverket-merk at etter at du har gjort en USB-opplasting til enheten, er det nødvendig med en tilbakestilling før OTA-oppdateringer vil fungere). Vennligst endre OTA -passordet på linje 6 for å være unikt for deg!
En webside som viser de samme dataene som python -skriptet gjør, med en automatisk oppdatering hvert minutt. Jeg la ikke noen form for sikkerhet på siden, fordi den bare er skjerm.
Du finner den nye koden her. Vær oppmerksom på at pinnavnene endres når du flytter til NodeMCU.
Anbefalt:
Fixing a Monitor With a Breadmaker: AKA Don't Kast It Out !: 5 trinn (med bilder)
Å fikse en skjerm med en brødmaker: AKA Don't Throw It Out !: Lokalt i Victoria, BC har vi en fyr som tar kassert, men brukbart IT -utstyr og sender det tilbake til samfunnet gratis. Hans innsats er å holde brukt elektronikk utenfor deponier og hjelpe folk som er fantastisk. Jeg hentet en
Space Invaders Lysekrone med glød i mørket Action: 16 trinn (med bilder)
Space Invaders lysekrone med glød i mørket Handling: Bruk 3D -modellering/utskrift, laserskåret akryl, harpiksstøpning, UV -reaktivt pigment, lysdioder og noen enkle ledninger for å lage en høy stil og retro kult rominntrengende lysekrone eller lampe. Jeg har tatt med et fint triks for å lage buede hjørner av laserku
Zebra S Series Printers: Ribbon Nightmare No More: 8 Steps (med bilder)
Zebra S -serien skrivere: Ribbon Nightmare No More: Alle kjenner laser- og blekkskrivere siden de er allestedsnærværende på alle kontorer, SoHo og hjem rundt om i verden. De har noen langt fettere kjent som strekkodeskrivere eller etikettskrivere, og de spesialiserer seg i utgangspunktet på å bruke ruller (eller stabler) med l
Frosty Beverage Timer - No More Warm or Frozen Beer !: 24 Steps
Frosty Beverage Timer - No More Warm or Frozen Beer !: The Frosty Beverage Timer av Gadget Gangster er en timer for å gi deg beskjed når drikken din er avkjølt. Kjøp settet! http://gadgetgangster.com/154Ikke flere varme bokser eller eksploderte flasker, bare fortell Frosty Beverage Timer hvor kaldt du liker brygget ditt og
Spill alt fra NES til Xbox Med Skittlespider A.T.S Aka "The Contraption": 11 trinn (med bilder)
Spill alt fra NES til Xbox Med Skittlespider A.T.S Aka "The Contraption": This Instructable er for Skittlespider A.T.S (All Together System) også kjent som "The Contraption" Dette prosjektet viste seg å være vanskeligere enn jeg forventet. På noen få måter var det også lettere, så jeg kan ikke si at det var et generelt vanskelig eller lett prosjekt