Innholdsfortegnelse:

Spar vann og penger med dusjvannmonitoren: 15 trinn (med bilder)
Spar vann og penger med dusjvannmonitoren: 15 trinn (med bilder)

Video: Spar vann og penger med dusjvannmonitoren: 15 trinn (med bilder)

Video: Spar vann og penger med dusjvannmonitoren: 15 trinn (med bilder)
Video: Рецепт Храйме Пикантная Рыба По-Мароккански. Секрет приготовления 2024, Juli
Anonim
Spar vann og penger med dusjvannmonitoren
Spar vann og penger med dusjvannmonitoren
Spar vann og penger med dusjvannmonitoren
Spar vann og penger med dusjvannmonitoren
Spar vann og penger med dusjvannmonitoren
Spar vann og penger med dusjvannmonitoren
Spar vann og penger med dusjvannmonitoren
Spar vann og penger med dusjvannmonitoren

Som bruker mer vann - badekar eller dusj?

Jeg tenkte nylig på dette spørsmålet, og jeg innså at jeg faktisk ikke vet hvor mye vann som brukes når jeg dusjer. Jeg vet at når jeg er i dusjen, vandrer tankene mine noen ganger, tenker på en kul idé om nye prosjekter eller prøver å bestemme meg for hva jeg skal spise til frokost, mens vann bare strømmer ned i avløpet. Det ville være mye lettere å redusere vannforbruket hvis jeg faktisk visste hvor mange liter jeg brukte hver gang!

Jeg gjorde litt undersøkelser, og fant ut at forskjellige dusjhoder kan bruke alt fra 9,5 liter (2,5 gallon) per minutt til mindre enn 6 liter (1,6 gallon) per minutt, hvis du har en strømningsbegrensning installert. En veldig gammel dusj kan bruke enda mer vann.

Jeg bestemte meg for å designe og bygge en enhet som viser det totale vannmengden som brukes per dusj, vannkostnaden og strømningshastigheten. Jeg har hatt denne enheten installert i noen uker, og det er veldig praktisk å få en direkte avlesning av mengden vann som brukes.

I denne instruksen vil jeg forklare hvordan jeg bygde dette. Selvfølgelig trenger du ikke å følge trinnene mine nøyaktig! Det er alltid godt å bruke deler du har liggende. Jeg har inkludert lenker til alle delene jeg brukte, eller en tilsvarende del som vil fungere.

Rekvisita

(Alle priser i USD)

  • Flow Sensor - $ 3,87
  • LCD -skjerm - 2,29 dollar
  • Arduino Nano - 1,59 dollar
  • Boost Converter - 1,88 dollar
  • LiPo -lader - 1,89 dollar
  • Vanntett vippebryter - $ 0,93 (ikke akkurat den jeg brukte, men den burde fungere)
  • Vanntett trykknapp - 1,64 dollar
  • Avstand, M3 skruer og muttere - $ 6,99
  • 2X kvinnelig 3,5 mm jack - $ 2,86 ea.
  • 3,5 mm mannlig plugg - 1,48 dollar
  • 3,5 mm 3 'kabelmontering - $ 3,57
  • USB -kabelmontering - 1,74 dollar
  • 1/2 "NPS kvinnelig til kvinnelig kopling-$ 1.88
  • 500mAh 3.7V LiPo -batteri - $ 3,91

Verktøy og vanlige rekvisita

  • Loddejern og lodding
  • Metalltråd
  • Avbitertang
  • Wire strippere
  • Dobbeltsidig tape
  • Phillips skrujern
  • 3D -skriver (valgfritt)

Trinn 1: Vanntetting

Vanntetting
Vanntetting

Det vanskeligste ved dette prosjektet er å gjøre det hele vanntett. Siden den vil ligge i en dusj, må den kunne overleve ekstrem fuktighet og sporadisk sprut. Omtrent 75% av den totale tiden som ble brukt på dette prosjektet var å finne ut denne delen.

Slik jeg ser det, er det to valg: design et tilpasset 3D-trykt kabinett, eller prøv å få det til å fungere med et hyllehylle. Siden jeg nylig fikk min egen 3D -skriver, bestemte jeg meg for å gå med det første alternativet.

Hvis du ikke har tilgang til en 3D-skriver, er det noen hylster som jeg har funnet ut som er vanntette og sannsynligvis vil fungere. Vær oppmerksom på at jeg ikke har kjøpt noen av disse skapene, så jeg garanterer ikke at alle komponentene får plass inni!

Banggood - 100x68x50mm eske med gjennomsiktig lokk - $ 5,35

Digikey - 130x80x70mm eske med gjennomsiktig lokk - $ 11,65

For dette punktet og fremover, når jeg refererer til vedlegget, snakker jeg om min 3D -trykte.

Trinn 2: Min tilpassede 3D -trykte kabinett

Min tilpassede 3D -trykte kabinett!
Min tilpassede 3D -trykte kabinett!
Min tilpassede 3D -trykte kabinett!
Min tilpassede 3D -trykte kabinett!
Min tilpassede 3D -trykte kabinett!
Min tilpassede 3D -trykte kabinett!

Etter å ha jobbet i Fusion 360 i flere timer, kom jeg på dette kabinettet. Den har tre sirkulære utskjæringer for å passe til to kvinnelige 3,5 mm -kontakter og en vippebryter. Lokket har et 16 mm hull for den øyeblikkelige trykknappen, og en rektangulær utskjæring for skjermen, samt de fire monteringshullene for å holde skjermen på plass. Lokket er en egen del og har en leppe som forhindrer fuktinntrengning gjennom sømmen. De fire hullene på boksens hjørner skal holde lokket på med 30 mm avstand. Alle skruehullene er 3 mm i diameter, som passer til en M3 -skrue.

Du kan laste ned STL -filene fra Thingiverse -siden min. Den kan skrives ut uten flåter eller støtter, men jeg brukte støtter bare for å være trygg. Jeg brukte også 100% påfyll. Siden veggene er så tynne, endrer ikke reduksjonen av utfyllingsprosent den totale utskriftstiden eller det totale materialet, så jeg beholder det på 100%.

For å gjøre skjermen synlig, kan den enten stikke ut gjennom en utskjæring i lokket på skapet, eller plasseres bak et gjennomsiktig vindu. Siden skjermen ikke skal utsettes for fuktighet, sitter vi fast med det andre alternativet. Dessverre er 3D -utskrift med gjennomsiktig filament fortsatt i sin barndom, så vi må bli litt kreative.

Løsningen min var å lage en rektangulær utskjæring i lokket, og lime inn et stykke gjennomsiktig plast fra litt vegetabilsk emballasje. Denne teknikken kan brukes selv om du ikke bruker det egendefinerte kabinettet mitt; bare kutt ut et rektangel med en kniv eller en Dremel. Selvfølgelig, hvis du bruker et kabinett med et gjennomsiktig lokk, er dette ikke nødvendig i det hele tatt.

Den beste kilden til gjennomsiktig plast som jeg har funnet er emballasje. Vanligvis kommer spinat eller andre grønne grønnsaker i store klare plastbeholdere. I mitt tilfelle brukte jeg emballasjen fra en "peppermedley".

Jeg ønsket et overheng på 5 mm for å gi rikelig med overflate for liming, så jeg kuttet ut et 27x77 mm rektangel av klar plast. Jeg måtte trimme hjørnene litt slik at skruene skulle passe. Jeg sprutet en linje med superlim rundt omkretsen av utsnittet, og la deretter den klare plasten på. Jeg la til litt mer lim over kanten etter bare for å være sikker på at den var forseglet.

Pro-tips: Plasser delen foran en liten vifte mens limet tørker. Når superlim tørker, har det en tendens til å etterlate en grusom hvit rest, som vi absolutt ikke vil ha på vårt gjennomsiktige vindu. Jeg brukte en gammel 12V vifte fra en datamaskinens strømforsyning. Jeg lot limet sitte i 12 timer for å sikre at det var helt tørt.

Trinn 3: Montering av LCD -skjermen

Montering av LCD -skjermen
Montering av LCD -skjermen
Montering av LCD -skjermen
Montering av LCD -skjermen
Montering av LCD -skjermen
Montering av LCD -skjermen

Når det gjennomsiktige vinduet har tørket, kan LCD -skjermen monteres. LCD-skjermen er en super populær skjerm på 16 x 2 tegn, med I²C "ryggsekk" forhånds loddet på baksiden. Jeg anbefaler på det sterkeste å få denne skjermen med I²C -grensesnittet. Kabling av alle parallelle linjer er ganske irriterende og introduserer mer potensial for feil - I²C -versjonen har bare to ledninger for strøm og to ledninger for signal.

Jeg brukte fire 10 mm distanser for å montere skjermen. Avstandene har hver en hanntråd i den ene enden og en kvinnelig tråd i den andre. Jeg stakk hanntråden gjennom hullene på LCD -skjermen og strammet en M3 -mutter til hver enkelt. Deretter brukte jeg fire M3 -skruer for å feste hunnendene på avstandene gjennom lokket på kabinettet. Jeg har denne pakken med standoffs som har 10 mm for montering av LCD -skjermen, og lengre for å holde lokket til basen. I tillegg er det M3 -skruer og muttere, så du trenger ikke kjøpe ekstra maskinvare.

Pass på at mutrene er veldig tette, slik at når du strammer skruene, vender ikke avstandene. Sørg også for at du ikke strammer skruene for mye, ellers kan plastlokket deformeres og ikke tette ordentlig.

Raden med 16 toppnål på LCD -skjermen skal være øverst - pass på at du ikke monterer LCD -skjermen opp ned!

Trinn 4: Montering av den øyeblikkelige knappen

Montering av den øyeblikkelige knappen
Montering av den øyeblikkelige knappen
Montering av den øyeblikkelige knappen
Montering av den øyeblikkelige knappen
Montering av den øyeblikkelige knappen
Montering av den øyeblikkelige knappen

Jeg bestemte meg for å bruke denne sykt kromknappen på frontpanelet. Jeg har brukt dem i tidligere prosjekter, og jeg liker virkelig hvordan de ser ut. De skal være vanntette, og de kommer med en gummiring for å hindre at fuktighet kommer inn i kabinettet gjennom trådene.

Dette trinnet er ganske enkelt. Løsne mutteren, men behold gummiringen. Stikk knappen gjennom hullet i lokket, og stram mutteren fra baksiden. Unngå å stramme mutteren for mye, ellers blir gummiringen knust og vil ikke tjene sin hensikt.

Trinn 5: Strøm og ladekrets

Strøm og ladekrets
Strøm og ladekrets
Strøm og ladekrets
Strøm og ladekrets
Strøm og ladekrets
Strøm og ladekrets

Nå skal vi sette sammen batterikomponentene. Dette inkluderer batteri, hovedbryter, batteriovervåkning/ladekort og boost -omformeren.

Batteriet jeg brukte er et 3,7V 1500 mAh encellet litiumionbatteri. Den spesielle jeg brukte ble hentet fra en ødelagt Playstation -kontroller. Ethvert encellet Li-Ion- eller LiPo-batteri vil fungere, så lenge det passer inn i skapet ditt. Denne typen batterier pleier å være veldig tynne og flate, så du kan sannsynligvis bruke et dobbelt så stort som mitt uten problemer. En 18650 celle ville fungere, men den passer ikke i det egendefinerte kabinettet mitt, så du må designe din egen eller bruke en hylle. Hvis det er mulig, anbefaler jeg å bruke et berget batteri (som jeg gjorde) fordi frakt av batterier ofte er dyrt!

Batteriet skal først loddes til TP4056 ladekort. Hvis du vil, kan du lodde en JST RCY -kontakt til batteriet og laderen for enkelhets skyld (jeg gjorde dette), men det er ikke nødvendig. Sørg for å observere riktig polaritet som angitt av merkene på laderkortet, siden kortet ikke er beskyttet mot omvendt batteripolaritet!

Deretter loddes en ledning fra den positive utgangen til laderen (plassert ved siden av den positive batterikabelen) til den positive inngangen på boost -omformeren. Deretter loddes en ledning fra den negative utgangen (plassert ved siden av den negative batterikabelen) til hovedbryterens vanlige (midtre) pin. Til slutt loddes en ledning fra bryterens normalt åpne pin til boost-omformerens negative inngang. Hvis du kobler et multimeter til utgangen til boost -omformeren og slår på hovedbryteren, skal det vises en spenning.

Siden vår Arduino, LCD -skjerm og strømningssensor alle trenger 5V, må vi sette utgangen til boost -omformeren til 5V. Dette oppnås ved å dreie knappen på potensiometeret med en liten skrutrekker. Med hovedbryteren slått på, batteriet tilkoblet og multimeteret koblet til boost -omformerens utgang, dreier du potensiometeret sakte til utgangen leser 5V. Det vil være vanskelig å få en avlesning på nøyaktig 5.000V, men sikte på en spenning mellom 4.9V og 5.1V.

Siden det egendefinerte kabinettet mitt holdes lukket med flere skruer, ønsker vi ikke å måtte åpne etuiet hver gang det må lades. Jeg brukte en 3,5 mm hodetelefonkontakt til dette. Den eksakte kontakten jeg brukte er denne fra Digikey (som er størrelsen på utskjæringene i kabinettet mitt), men denne fra Banggood burde også fungere.

Først satte jeg kontakten inn i det nederste hullet i kabinettet. Siden dette vil være frakoblet det meste av tiden, og derfor er utsatt for fuktinntrengning, er det best å montere det på bunnen for å forhindre at vann drypper inne. Etter å ha installert låseskiven og strammet mutteren loddet jeg to ledninger til "spissen" og "hylsen" -flikene på kontakten. Pinout av kontakten er vist i et av mine kommenterte bilder. Jeg loddet den andre enden av "ermet" -ledningen til den negative inngangen på laderen, ved siden av mikro -USB -porten. Til slutt loddet jeg "tip" -ledningen til +5V -puten, på den andre siden av USB -porten. USB -porten på laderen vil ikke bli brukt, fordi det ville være vanskelig å få USB -porten til å trenge inn i kabinettet uten å slippe inn fuktighet.

Trinn 6: Ladekabel

Ladekabel
Ladekabel
Ladekabel
Ladekabel
Ladekabel
Ladekabel

Siden vi bruker en 3,5 mm lydkontakt som ladeport, må vi lage en adapterkabel som har en 3,5 mm hankontakt i den ene enden og en USB A -plugg i den andre enden. Dette vil tillate oss å bruke en generisk lader for mobilenheter (for eksempel en iPhone -lader) for å lade denne enheten.

Du kan kjøpe en USB -kabel med en USB A -kontakt i den ene enden og fortinnede ledninger i den andre enden, men hvis du er som meg, har du sannsynligvis et dusin tilfeldige USB -kabler som du ikke trenger. I stedet for å kjøpe en USB -kabelmontering, fikk jeg nettopp en mikro -USB til USB A -kabel som jeg ikke trengte og kuttet av mikro -USB -kontakten.

Deretter fjernet jeg den hvite jakken av kabelen for å avsløre bare to ledninger inni: en rød og en svart ledning. Noen USB -kabler har fire ledninger: rød, svart, grønn og hvit. De grønne og hvite er for dataoverføring, og kan ignoreres. Fjern isolasjonen bare fra de røde og svarte ledningene.

Deretter trenger du en 3,5 mm hankontakt. Jeg brukte denne fra Banggood. Lodd den røde ledningen fra USB -kabelen til den midtre tappen (som er spissen på kontakten) og den svarte ledningen til flippen med lange ermer. Se bildene mine for avklaring.

Jeg anbefaler at du alltid kobler til 3,5 mm -kontakten før USB -kontakten, ettersom prosessen med å koble til kabelen kan føre til at pluggen blir kort over metalluttaket.

Trinn 7: Om flytsensoren

Om flytsensoren
Om flytsensoren
Om flytsensoren
Om flytsensoren
Om flytsensoren
Om flytsensoren
Om flytsensoren
Om flytsensoren

Jeg hentet denne strømningssensoren fra Banggood for $ 3,87. Før jeg brukte den bestemte jeg meg for å undersøke hvordan den fungerer.

Designet er overraskende enkelt og genialt. Elektronikken er fullstendig forseglet fra vannet. Det er en gratis spinnende propell som spinner saktere eller raskere avhengig av strømningshastigheten. På et tidspunkt på propellen er det en magnet. På utsiden av sensoren er et lite rom som inneholder et lite PCB med to komponenter: en motstand og en hall-effekt sensor. Hver gang magneten passerer hall-effektføleren, veksler den mellom høy og lav. Med andre ord bytter den mellom 5V og 0V hver gang propellen roterer.

For å lese sensoren, bruker vi +5V på den røde ledningen, negative til den svarte ledningen, og leser det digitale signalet fra den gule ledningen. På bildet av oscilloskopet mitt kan du se hvordan signalet endres når strømmen slås på. I begynnelsen er signalet konstant null volt. Når strømmen starter, kommer frekvensen av pulser raskt opp i hastighet og når en stabil tilstand.

I henhold til databladet sender sensoren ut 450 pulser per liter. Dette vil være viktig senere når vi skriver programvaren.

Trinn 8: Tilførsel av strømningssensor

Flow Sensor ledninger
Flow Sensor ledninger
Flow Sensor ledninger
Flow Sensor ledninger
Flow Sensor ledninger
Flow Sensor ledninger
Flow Sensor ledninger
Flow Sensor ledninger

Strømningssensoren leveres med en 3-pinners JST-XH-kontakt. Dette er ikke ideelt fordi ledningene er for korte, og kontakten har eksponerte kontakter som lett kan kortsluttes av vanntette vanndråper. Jeg bestilte denne 3,5 mm lydpluggkabelenheten fra Digikey. Den er 3 'lang, som er den perfekte lengden, og den har fortinnede ledninger, noe som gjør det enkelt å lodde. Jeg anbefaler ikke å prøve å bruke en gammel hodetelefonkabel, da de har en veldig tynn emaljert ledning, som er nesten umulig å lodde.

Strømningssensoren har et plastdeksel som holdes fast av to stjerneskruer. Bare fjern disse skruene og trekk ut kretskortet. Det holdes ikke fast med noe lim, det holdes bare på plass med plastlokket. Deretter lodder du de tre ledningene ved å varme dem opp med et loddejern og løfte dem av, en om gangen.

Deretter loddes 3,5 mm lydkabelen til putene. Jeg foreslår at du matcher fargene slik jeg gjorde. Denne konfigurasjonen har +5V på spissen, signal på ringen og jord på ermet. Dette er den samme konfigurasjonen som ble brukt for ladeporten, fra trinn 6. Hvis du ved et uhell kobler laderen til sensorporten, eller omvendt, vil det ikke være noen skade på enheten.

Trinn 9: Installere flytsensoren

Installere flytsensoren
Installere flytsensoren
Installere flytsensoren
Installere flytsensoren
Installere flytsensoren
Installere flytsensoren

Frem til dette tidspunktet har alt vårt arbeid foregått på verkstedet. Men nå er det på tide å gå på do!

Først fjernet jeg dusjhodet. Dette avslørte en liten bit av røret som stakk ut fra veggen, med 1/2 NPS -gjengegang. Praktisk sett har strømningssensoren vår nøyaktig samme trådstørrelse! Det eneste problemet er at sensoren har mannlig gjenging i begge ender, så vi vil trenger en hun-til-hunn-kobling.

På min lokale jernvarehandel var det 1/2 koblinger i messing, jern og PVC. PVC -en var den billigste, så jeg fikk den. Selv i ettertid ville messing eller stål ha sett penere ut.

Når du har koblingen, er det bare å skru inn strømningssensoren i koblingen, og deretter skru den andre enden av koblingen på røret. Strømningssensoren har en pil for å indikere den tiltenkte strømningsretningen. Pass på at du ikke installerer det bakover, ellers kan målingene være unøyaktige. Skru til slutt dusjhodet på enden av strømningssensoren.

Selvfølgelig antar jeg at dusjen din bruker en 1/2 NPS -tråd, slik min gjorde. Hvis dette ikke er tilfelle, må du skaffe ekstra adaptere.

Tips: Legg til litt teflonrørleggerbånd til alle trådene før du skrur sammen brikkene for å forhindre lekkasjer. Jeg hadde ingen på hånden, men jeg planlegger å legge til dette i nær fremtid.

Trinn 10: Arduino og Perfboard

Arduino og Perfboard
Arduino og Perfboard
Arduino og Perfboard
Arduino og Perfboard
Arduino og Perfboard
Arduino og Perfboard

Siden vi kommer til å måtte gjøre mange ledninger, er det en god idé å få et stykke perfboard for å gjøre ting litt ryddigere. Jeg kuttet et rektangel av perfboard omtrent 1 "x 2". Deretter plasserte jeg min Arduino Nano midt på brettet og merket hvor toppnålene gikk gjennom. Deretter kuttet jeg to lengder med kvinnelige overskrifter, hver 15 pins lang. Jeg loddet disse på perfboardet der jeg tidligere merket. Dette vil tillate oss å fjerne Arduino for programmering.

Pro-tips: Merk orienteringen til Arduino USB-porten slik at du alltid kobler den til perfboardet på samme måte.

Trinn 11: Koble til alt

Kabling av alt
Kabling av alt
Kabling av alt
Kabling av alt
Kabling av alt
Kabling av alt

Nå er det på tide å lodde alt sammen! Jeg har inkludert et komplett koblingsskjema, som du kan følge, eller se de skrevne trinnene nedenfor hvis du foretrekker en mer guidet tilnærming.

Først kuttet jeg noen mannlige toppnål og loddet dem på perfboardet på +5V og jordskinner. Deretter loddet jeg ytterligere to toppnoder som er koblet til pinne A4 og A5 på Arduino. Disse topptekstene lar oss koble til LCD-skjermen ved hjelp av hun-til-kvinne-hoppere.

Deretter loddet jeg et par ledninger fra utgangen fra boost -omformeren til +5V og jordskinner. Dette vil gi strøm til Arduino, LCD og strømningssensor.

Etter det kuttet jeg to ledninger og koblet dem til terminalene på trykknappen. Jeg loddet den ene ledningen til jordskinnen, og den andre til digital pin 3.

Den siste delen til lodding er strømningssensoren. Siden vi allerede har festet en 3,5 mm plugg til sensoren, trenger vi bare å lodde en 3,5 mm hunkontakt. Først loddet jeg tre ledninger - en til hver av tappene på kontakten. Deretter førte jeg ut jekken gjennom kabinettet og festet den på plass med en mutter. Til slutt loddet jeg ermet til bakken, spissen til +5V og ringen til digital pin 2.

Jeg valgte å bruke digitale pinner 2 og 3 for knappen og strømningssensoren fordi de er maskinvareavbruddsstifter. Dette vil gjøre det mye lettere å skrive koden.

Nå er vi ferdig med lodding, men vi trenger fortsatt å koble til LCD -skjermen. Siden vi loddet headers, trenger vi bare fire hun-til-kvinnelige hoppere. Koble "Vcc" -pinnen til +5V, "Gnd" -pinnen til bakken, "SCL" -pinnen til A5 og "SDA" -pinnen til A4. For at LCD -skjermen skal passe inn i kabinettet, må vi bøye topptekstene bakover. Hvis du bøyer pinnene frem og tilbake flere ganger, blir metallet trøtt og får pinnene til å gå i stykker, så jeg anbefaler at du bare bøyer dem en gang, og gjør det med forsiktighet.

Nå er ledningen ferdig!

Trinn 12: Programmering

Programmering
Programmering

Nå som maskinvaren er tilkoblet, kan vi programmere Arduino.

Jeg vil at programmet skal ha følgende funksjoner:

  • På den første linjen viser du en raskt oppdatering av de totale literene
  • På den andre linjen viser du den totale kostnaden for vannet eller strømningshastigheten
  • Når dusjen er i gang, bytter trykknappen mellom å vise kostnaden eller strømningshastigheten
  • Når dusjen ikke er i gang, bør trykknappen slette alle dataene og tilbakestille skjermen
  • Sensoren bør leses ved hjelp av en avbruddsrutine for å unngå grove avstemningsmetoder
  • Når du oppdaterer skjermen, bør vi bare oppdatere verdiene som er endret, i stedet for å overskrive hele skjermen hver gang (dette vil føre til merkbar flimmer)

Programmet følger en enkel struktur. Ved å bruke millis () -funksjonen kan vi opprette forsinkelser som faktisk ikke stopper utførelsen av programmet. Se denne opplæringen for et eksempel på å blinke en LED uten å bruke funksjonen forsinkelse ().

Millis () -funksjonen returnerer antall millisekunder siden Arduino ble slått på. Ved å opprette en variabel "previousMillis" og trekke fra Millis () - previousMillis (), kan vi se tiden som gikk siden previousMillis ble oppdatert.

Hvis vi vil at noe skal skje ett per sekund, kan vi bruke følgende kodeblokk:

if ((millis () - previousMillis)> = 1000) {

foregående Millis = millis (); toggleLED (); }

Dette sjekker om forskjellen mellom millis () (nåværende tid) og foregående millis (siste gang) er større enn eller lik 1000 millisekunder. Hvis det er det, er det første vi gjør å sette tidligere Millis lik gjeldende tid. Deretter utfører vi de ytterligere trinnene vi ønsker. I dette eksemplet bytter vi en LED. Deretter går vi ut av denne blokkblokken og fullfører resten av loop () -funksjonen, før vi går tilbake til starten og gjentar den igjen.

Fordelen med å bruke denne metoden i forhold til funksjonen simple delay () er at delay () setter et mellomrom mellom instruksjonene, men ikke tar hensyn til tiden det tar å utføre de andre instruksjonene i loop () -funksjonen. Hvis du gjør noe som tar lengre tid enn å bare blinke en LED, for eksempel oppdatering av en LCD -skjerm, er tiden det tar ikke ubetydelig, og etter noen sykluser vil det legge seg opp. Hvis du oppdaterer LCD -skjermen på en klokke, vil det raskt bli unøyaktig og falle bak.

Så nå som vi forstår programmets overordnede struktur, er det på tide å sette inn instruksjonene. I stedet for å forklare hver eneste kodelinje her, foreslår jeg at du først leser over det vedlagte flytskjemaet, som gir en oversikt på høyt nivå over hva programmet gjør.

Når du har sett flytskjemaet, kan du se på den vedlagte Arduino -koden. Jeg har kommentert nesten hver linje for å gjøre det klart hva hver linje gjør.

Det er noen få deler i koden du vil endre. Viktigst er prisen per liter. I byen min koster vannet 0,2523 ¢ per liter. Finn følgende linje, og endre verdien for å matche kostnaden der du bor:

const float COST_PER_LITRE = 0,2523; // pris per liter, i cent, fra byens nettsted

Hvis du foretrekker å bruke liter over liter, endrer du alle "LCD.print ()" -linjene som refererer til "L" eller "L/s" til "G" eller "G/s". Slett deretter følgende linje:

const float KONVERTERING = 450,0; // behold dette ukommentert i liter

… og kommenter denne linjen:

const float KONVERTERING = 1703,0; // kommenter dette og slett linjen ovenfor for liter

Det er en merkelighet til som du kanskje har lagt merke til i koden min. Standard tegnsett inkluderer ikke "¢" tegnet, og jeg ønsket ikke å bruke dollar, fordi kostnaden ville vise seg som "$ 0,01" eller mindre for det meste av tiden. Derfor ble jeg tvunget til å lage en egendefinert karakter. Følgende byte -array brukes til å representere dette symbolet:

byte cent_sign = {B00100, B00100, B01111, B10100, B10100, B01111, B00100, B00100};

Etter å ha opprettet denne matrisen, må spesialtegnet "opprettes" og lagres.

lcd.createChar (0, cent_sign);

Når dette er gjort, bruker vi følgende linje for å skrive ut det egendefinerte tegnet:

lcd.write (byte (0)); // print cents sign (¢)

LCD -skjermen kan ha opptil 8 egendefinerte tegn. Mer informasjon om dette er her. Jeg kom også over dette nyttige online verktøyet som lar deg tegne det egendefinerte tegnet ved hjelp av et grafisk grensesnitt, og det vil automatisk generere det tilpassede byte -arrayet.

Trinn 13: Lukk lokket

Lukke lokket
Lukke lokket
Lukke lokket
Lukke lokket
Lukke lokket
Lukke lokket

Endelig er vi nesten ferdige!

Det er på tide å stappe all elektronikken inn i kabinettet og håpe at lokket lukkes. Men først må vi feste 30 mm -avstandene. Pakken med distanser jeg kjøpte inkluderer ikke noen som er så lange, men den kommer med 20 mm og 10 mm som kan festes sammen. Jeg skrudde fire distanser i hullene på bunnen av kabinettet med fire M3 -skruer (se bilder 1 og 2). Sørg for å stramme disse godt, men ikke for tett, ellers risikerer du å ødelegge plasthuset.

Nå kan vi få plass til all elektronikken inni. Jeg festet laderen og boost-omformeren til lokket med dobbeltsidig tape, som vist på det tredje bildet. Deretter pakket jeg litt elektrisk tape rundt det eksponerte metallet på de to 3,5 mm -kontaktene, bare for å sikre at ingenting blir kortsluttet ved å kontakte kontaktene.

Jeg klarte å få Arduino til å passe ved å plassere den på siden, nederst i venstre hjørne, med USB -porten vendt mot høyre. Jeg brukte mer dobbeltsidig tape for å feste batteriet til bunnen av kabinettet under LCD-skjermen.

Til slutt, når alt sitter fast mer eller mindre sikkert i esken, kan lokket skrues ned med ytterligere fire M3 -skruer.

Trinn 14: Testing

Testing
Testing
Testing
Testing
Testing
Testing
Testing
Testing

Plugg først inn 3,5 mm kontakten fra strømningssensoren. Jeg anbefaler å gjøre dette før enheten slås på, fordi det er mulig for pluggen å opprette uønsket tilkobling når den settes inn.

Deretter slår du på hovedstrømbryteren. Selv om det ikke renner vann, bør ikke frontpanelknappen gjøre noe annet enn å slette summen og slette skjermen. Siden summen er null som standard, ser det ikke ut til at knappen gjør noe ennå.

Hvis du slår på dusjen, bør totalen begynne å øke. Som standard vises kostnaden. Hvis du trykker på frontpanelknappen, vil strømningshastigheten vises på bunnlinjen. Trykk på frontpanelknappen for å veksle mellom visning av strømningshastighet og visning av kostnaden, så lenge dusjen er i gang. Når dusjen stopper, vil du trykke på frontpanelknappen for å nullstille målingene og tømme skjermen.

Montering

Hvordan du velger å montere enheten, avhenger av utformingen av dusjen din. Noen dusjer kan ha en hylle som er nær nok til dusjhodet, slik at du enkelt kan plassere enheten der. I dusjen min har jeg en kurv festet med sugekopper som jeg plasserte enheten inne i. Hvis du ikke har luksusen til en hylle eller kurv, kan du prøve å holde enheten mot veggen med en dobbeltsidig sugekopp. Dette fungerer bare hvis du bruker et hyllehylle som har en jevn bakside, eller hvis du har skrevet ut det tilpassede kabinettet mitt på en skriver med en glassplate. Hvis kabinettet ditt har en grov bakside (som min gjør), kan du prøve å bruke dobbeltsidig tape, selv om dette kan etterlate noen rester på dusjveggen din hvis du prøver å fjerne enheten.

Feilsøking

Skjermen er på, men bakgrunnsbelysningen er slått av - sørg for at jumperen er installert på de to pinnene på siden av I ² C -modulen

Skjermen er blank, med bakgrunnsbelysning på - sjekk at I ² C -adressen er riktig ved å kjøre I²C -skanneren

Skjermen er på, men verdiene forblir null - sjekk at det kommer et signal fra sensoren ved å måle spenningen på pinne 2. Hvis det ikke er noe signal, må du kontrollere at sensoren er riktig tilkoblet.

Skjermen er blank med bakgrunnsbelysning av - sjekk at strømlampen på Arduino er på, og kontroller at skjermen har strøm

Skjermen slås på kort, så stopper alt - du har sannsynligvis satt spenningen fra boost -omformeren for høyt (komponentene klarer ikke mer enn 5V)

Enheten fungerer, men verdiene er feil - sørg for at strømningssensoren du bruker har den samme konverteringsfaktoren på 450 pulser per liter. Ulike sensorer kan ha forskjellige verdier.

Trinn 15: Begynn nå å spare vann

Forbedringer

Den nåværende versjonen av programvaren fungerer bra nok, men til slutt vil jeg legge til muligheten til å ha forskjellige brukere (familiemedlemmer, huskamerater, etc.) Enheten lagrer hver persons statistikk (totalt vann og totalt antall dusjer) til vise en gjennomsnittlig vannbruk for hver person. Dette kan oppmuntre folk til å konkurrere om å bruke minst mulig vann.

Det ville også være kult å ha en måte å eksportere dataene som skal vises i et regneark, slik at de kan grafiseres. Da kunne du se hvilke tider på året folk har hyppigere og lengre dusjer.

Disse funksjonene krever alle bruk av EEPROM-Arduino's innebygde ikke-flyktige minne. Dette vil tillate at data beholdes selv etter at enheten er slått av.

En annen nyttig funksjon ville være en batteriindikator. Akkurat nå er den eneste indikasjonen på at enheten må lades opp når batterimesterkortet slår av strømmen. Det ville være enkelt å koble til en ekstra analog inngang for å måle batterispenningen. En spenningsdeler ville ikke engang være nødvendig siden batterispenningen alltid er mindre enn 5V.

Noen av disse ideene grenser til funksjonskryp, og derfor utviklet jeg ikke programvaren videre.

Resten er opp til deg!

Sensorkonkurranse
Sensorkonkurranse
Sensorkonkurranse
Sensorkonkurranse

Førstepremie i sensorkonkurransen

Anbefalt: