Indholdsfortegnelse:

Spar vand og penge med brusebadets vandmonitor: 15 trin (med billeder)
Spar vand og penge med brusebadets vandmonitor: 15 trin (med billeder)

Video: Spar vand og penge med brusebadets vandmonitor: 15 trin (med billeder)

Video: Spar vand og penge med brusebadets vandmonitor: 15 trin (med billeder)
Video: Inside a Scandinavian Inspired Los Angeles Modern Mansion! 2024, Juli
Anonim
Spar vand og penge med brusebadets vandmonitor
Spar vand og penge med brusebadets vandmonitor
Spar vand og penge med brusebadets vandmonitor
Spar vand og penge med brusebadets vandmonitor
Spar vand og penge med brusebadets vandmonitor
Spar vand og penge med brusebadets vandmonitor
Spar vand og penge med brusebadets vandmonitor
Spar vand og penge med brusebadets vandmonitor

Hvilket bruger mere vand - et badekar eller et brusebad?

Jeg tænkte for nylig over dette spørgsmål, og jeg indså, at jeg faktisk ikke ved, hvor meget vand der bruges, når jeg bruser. Jeg ved, når jeg er i bad, nogle gange vandrer mit sind, tænker på en cool ny projektidé eller forsøger at beslutte, hvad jeg skal have til morgenmad, mens vandet bare strømmer ned i afløbet. Det ville være meget lettere at reducere mit vandforbrug, hvis jeg faktisk vidste, hvor mange liter jeg brugte hver gang!

Jeg undersøgte lidt og fandt ud af, at forskellige brusehoveder kan bruge alt fra 9,5 liter (2,5 gallon) i minuttet til mindre end 6 liter (1,6 gallon) i minuttet, hvis du har en flowbegrænser installeret. Et meget gammelt brusebad kunne bruge endnu mere vand.

Jeg besluttede at designe og bygge en enhed, der ville vise den samlede mængde vand, der blev brugt pr. Bruser, vandets omkostninger og strømningshastigheden. Jeg har haft denne enhed installeret i et par uger, og det er virkelig praktisk at få en levende aflæsning af mængden af vand, der bruges.

I denne Instructable forklarer jeg, hvordan jeg byggede dette. Selvfølgelig behøver du ikke at følge mine trin præcist! Det er altid godt at bruge dele, du har liggende. Jeg har inkluderet links til alle de dele, jeg brugte, eller en tilsvarende del, der fungerer.

Forbrugsvarer

(Alle priser i USD)

  • Flow Sensor - $ 3,87
  • LCD -skærm - $ 2,29
  • Arduino Nano - $ 1,59
  • Boost Converter - $ 1,88
  • LiPo oplader - $ 1,89
  • Vandtæt vippekontakt - $ 0,93 (ikke den nøjagtige, jeg brugte, men det burde fungere)
  • Vandtæt trykknap - $ 1,64
  • Afstande, M3 skruer og møtrikker - $ 6,99
  • 2X hunstik på 3,5 mm - 2,86 dollar pr. Stk.
  • 3,5 mm hanstik - 1,48 dollar
  • 3,5 mm 3 'kabelsamling - $ 3,57
  • USB -kabelsamling - 1,74 $
  • 1/2 "NPS hun-til-hun-kobling-$ 1.88
  • 500mAh 3.7V LiPo batteri - $ 3,91

Værktøjer og almindelige forsyninger

  • Loddejern & lodning
  • Tråd
  • Trådskærere
  • Wire Strippers
  • Dobbeltsidet tape
  • Phillips skruetrækker
  • 3D -printer (valgfri)

Trin 1: Vandtætning

Vandtæt
Vandtæt

Det vanskeligste ved dette projekt er at gøre det hele vandtæt. Da det vil ligge i et brusebad, skal det være i stand til at overleve ekstrem fugtighed og lejlighedsvis sprøjt. Omkring 75% af den samlede tid brugt på dette projekt var at finde ud af denne del.

Som jeg ser det, er der to valgmuligheder: design et brugerdefineret 3D-trykt kabinet, eller prøv at få det til at fungere med et kabinet uden hylder. Da jeg for nylig fik min egen 3D -printer, besluttede jeg at gå med den første mulighed.

Hvis du ikke har adgang til en 3D-printer, er der nogle skråstande, jeg har fundet ud af, at de er vandtætte og sandsynligvis ville fungere. Bemærk, at jeg ikke har købt nogen af disse kabinetter, så jeg garanterer ikke, at alle komponenterne passer ind!

Banggood - 100x68x50mm æske med gennemsigtigt låg - $ 5,35

Digikey - 130x80x70mm kasse med gennemsigtigt låg - $ 11,65

For dette tidspunkt og fremad, når jeg refererer til kabinettet, taler jeg om min 3D -trykte.

Trin 2: Min brugerdefinerede 3D -trykte kabinet

Min brugerdefinerede 3D -trykte kabinet!
Min brugerdefinerede 3D -trykte kabinet!
Min brugerdefinerede 3D -trykte kabinet!
Min brugerdefinerede 3D -trykte kabinet!
Min brugerdefinerede 3D -trykte kabinet!
Min brugerdefinerede 3D -trykte kabinet!

Efter at have arbejdet i Fusion 360 i flere timer, fandt jeg på dette kabinet. Den har tre cirkulære udskæringer, der passer til to hunstik på 3,5 mm og en vippekontakt. Låget har et 16 mm hul til den øjeblikkelige trykknap og en rektangulær udskæring til skærmen samt de fire monteringshuller til at holde skærmen på plads. Låget er en separat del og har en læbe, der hjælper med at forhindre fugtindtrængning gennem sømmen. De fire huller på æskens hjørner skal holde låget på med 30 mm afstand. Alle skruehullerne er 3 mm i diameter, hvilket passer til en M3 -skrue.

Du kan downloade STL -filerne fra min Thingiverse -side. Det kan udskrives uden tømmerflåder eller understøtninger, men jeg brugte understøtninger bare for at være sikker. Jeg brugte også 100% fyld. Da væggene er så tynde, ændrer reduceringen af udfyldningsprocenten ikke rigtig den samlede udskrivningstid eller det samlede materiale, så jeg beholdt det bare på 100%.

For at gøre skærmen synlig kan den enten stikke ud gennem en udskæring i låget på kabinettet eller placeres bag et gennemsigtigt vindue. Da skærmen ikke bør udsættes for fugt, sidder vi fast med den anden mulighed. Desværre er 3D -udskrivning med gennemsigtigt filament stadig i sin vorden, så vi bliver nødt til at blive lidt kreative.

Min løsning var at oprette en rektangulær udskæring i låget og lime et stykke gennemsigtigt plastik fra nogle vegetabilske emballager. Denne teknik kan bruges, selvom du ikke bruger mit brugerdefinerede kabinet; skær blot et rektangel ud med en kniv eller en Dremel. Selvfølgelig, hvis du bruger et kabinet med et gennemsigtigt låg, er det slet ikke nødvendigt.

Den bedste kilde til gennemsigtig plast, jeg har fundet, er emballage. Normalt kommer spinat eller andre bladgrøntsager i store klare plastbeholdere. I mit tilfælde brugte jeg emballagen fra en "peber medley".

Jeg ville have et overhæng på 5 mm for at give masser af overfladeareal til limning, så jeg skar et 27x77 mm rektangel af klar plast ud. Jeg var nødt til at trimme hjørnerne lidt, så skruerne passede. Jeg sprøjtede en linje med superlim omkring omkredsen af udskæringen og lagde derefter den klare plastik på. Jeg tilføjede lidt mere superlim omkring kanten efter bare for at sikre, at den var forseglet.

Pro-tip: Placer delen foran en lille blæser, mens limen tørrer. Efterhånden som superlim tørrer, har den en tendens til at efterlade en grim hvid rest, som vi bestemt ikke ønsker på vores gennemsigtige vindue. Jeg brugte en gammel 12V blæser fra en computer strømforsyning. Jeg lod limen sidde i 12 timer for at sikre, at den var helt tør.

Trin 3: Montering af LCD -skærmen

Montering af LCD -skærmen
Montering af LCD -skærmen
Montering af LCD -skærmen
Montering af LCD -skærmen
Montering af LCD -skærmen
Montering af LCD -skærmen

Når det gennemsigtige vindue er tørret, kan LCD -skærmen monteres. LCD'et er et super populært 16x2 tegn display, med I²C "rygsæk" på forhånd loddet på bagsiden. Jeg anbefaler stærkt at få denne skærm med I²C interface. Tilslutning af alle parallelle linjer er ret irriterende og introducerer mere potentiale for fejl - I²C -versionen har kun to ledninger til strøm og to ledninger til signal.

Jeg brugte fire 10 mm afstand til at montere skærmen. Afstandene har hver en han -tråd i den ene ende og en hun -tråd i den anden. Jeg lagde hantråden gennem hullerne i LCD'et og strammede en M3 møtrik til hver enkelt. Derefter brugte jeg fire M3 skruer til at fastgøre hunenden på afstandene gennem låget på kabinettet. Jeg fik denne pakke med standoffs, der har 10 mm dem til at montere LCD'et, og længere dem til at holde låget til basen. Derudover er der M3 skruer og møtrikker, så du behøver ikke købe ekstra hardware.

Sørg for at møtrikkerne er meget stramme, så når du strammer skruerne, drejer afstandene ikke. Sørg også for, at du ikke strammer skruerne for meget, ellers kan plastlåget deformeres og ikke tætne ordentligt.

Rækken med 16 headerstifter på LCD'et skal være øverst - sørg for at du ikke monterer LCD'et på hovedet!

Trin 4: Montering af den øjeblikkelige knap

Montering af den øjeblikkelige knap
Montering af den øjeblikkelige knap
Montering af den øjeblikkelige knap
Montering af den øjeblikkelige knap
Montering af den øjeblikkelige knap
Montering af den øjeblikkelige knap

Jeg besluttede mig for at bruge denne sygemæssige kromknap på frontpanelet. Jeg har brugt dem i tidligere projekter, og jeg kan virkelig godt lide, hvordan de ser ud. De skal være vandtætte, og de leveres med en gummiring for at forhindre fugt i at komme ind i kabinettet gennem trådene.

Dette trin er ret ligetil. Løsn møtrikken, men behold gummiringen. Sæt knappen gennem hullet i låget, og stram møtrikken fra bagsiden. Undgå at stramme møtrikken for meget, ellers knuses gummiringen og tjener ikke sit formål.

Trin 5: Strøm og opladningskredsløb

Strøm og opladningskredsløb
Strøm og opladningskredsløb
Strøm og opladningskredsløb
Strøm og opladningskredsløb
Strøm og opladningskredsløb
Strøm og opladningskredsløb

Nu sætter vi batterikomponenterne sammen. Dette inkluderer batteri, hovedafbryder, batteriovervågning/opladningskort og boostkonverter.

Batteriet jeg brugte er et 3,7V 1500 mAh encellet lithium-ion batteri. Den særlige jeg brugte blev trukket fra en ødelagt Playstation -controller. Ethvert enkeltcellet Li-Ion- eller LiPo-batteri fungerer, så længe det passer ind i dit kabinet. Denne type batteri har en tendens til at være meget tynd og flad, så du kan sikkert bruge et dobbelt så stort som mit uden problemer. En 18650 celle ville fungere, men den passer ikke i mit brugerdefinerede kabinet, så du bliver nødt til at designe din egen eller bruge en hylde. Hvis det er muligt, anbefaler jeg at bruge et bjærget batteri (som jeg gjorde), fordi forsendelse af batterier ofte er dyrt!

Batteriet skal først loddes til TP4056 -opladningskortet. Hvis du vil, kan du lodde et JST RCY -stik til batteriet og opladeren for nemheds skyld (jeg gjorde dette), men det er ikke nødvendigt. Sørg for at observere den korrekte polaritet som angivet af markeringerne på opladerkortet, da kortet ikke er beskyttet mod omvendt batteripolaritet!

Derefter loddes en ledning fra opladerens positive output (placeret ved siden af den positive batterikabel) til den positive indgang på boost -omformeren. Lod derefter en ledning fra den negative udgang (placeret ved siden af den negative batterikabel) til hovedvælgerkontaktens almindelige (midter) pin. Endelig loddes en ledning fra switchens normalt åbne pin til boost-konverterens negative input. Hvis du tilslutter et multimeter til boostkonverterens udgang og tænder for hovedafbryderen, skal der vises en spænding.

Da vores Arduino, LCD -skærm og flow sensor alle har brug for 5V, skal vi indstille output fra boost -konverteren til 5V. Dette opnås ved at dreje knappen på potentiometeret med en lille skruetrækker. Med hovedkontakten tændt, batteriet tilsluttet og multimeteret tilsluttet boost -konverterens udgang, skal du langsomt dreje på potentiometeret, indtil udgangen læser 5V. Det vil være svært at få en aflæsning på nøjagtigt 5.000V, men sigter mod en spænding mellem 4.9V og 5.1V.

Da mit tilpassede kabinet holdes lukket med flere skruer, ønsker vi ikke at skulle åbne kassen hver gang den skal oplades. Jeg brugte et 3,5 mm hovedtelefonstik til dette. Det nøjagtige stik, jeg brugte, er dette fra Digikey (hvilket er størrelsen på udskæringerne i mit kabinet), men dette fra Banggood burde også fungere.

Først indsatte jeg stikket i det nederste hul i kabinettet. Da dette vil være taget ud af stikkontakten det meste af tiden og derfor er modtageligt for fugtindtrængning, er det bedst at montere det på bunden for at forhindre vand i at dryppe indeni. Efter installation af låseskiven og stramning af møtrikken lodde jeg to ledninger til "tip" og "muffe" fanerne på stikket. Pinout af stikket er vist i et af mine annoterede billeder. Jeg loddet den anden ende af "ærmet" -tråden til den negative indgang på opladeren ved siden af mikro -USB -porten. Til sidst lod jeg "tip" -tråden til +5V -puden på den anden side af USB -porten. USB -porten på opladeren bruges ikke, fordi det ville være svært at få USB -porten til at trænge ind i kabinettet uden at tillade fugt.

Trin 6: Opladningskabel

Opladningskabel
Opladningskabel
Opladningskabel
Opladningskabel
Opladningskabel
Opladningskabel

Da vi bruger et 3,5 mm lydstik som vores opladningsport, skal vi lave et adapterkabel, der har et 3,5 mm hanstik i den ene ende og et USB A -stik i den anden ende. Dette giver os mulighed for at bruge enhver generisk oplader til mobilenheder (f.eks. En iPhone -oplader) til at oplade denne enhed.

Du kan købe en USB -kabelsamling med et USB A -stik i den ene ende og fortinnede ledninger i den anden ende, men hvis du er ligesom mig, har du sandsynligvis et dusin tilfældige USB -kabler, som du ikke har brug for. I stedet for at købe en USB -kabelsamling, fik jeg lige et mikro -USB til USB A -kabel, som jeg ikke havde brug for, og skar mikro -USB -stikket af.

Dernæst fjernede jeg den hvide jakke af kablet for kun at afsløre to ledninger indeni: en rød og en sort ledning. Nogle USB -kabler har fire ledninger: rød, sort, grøn og hvid. De grønne og hvide er til dataoverførsel og kan ignoreres. Fjern isoleringen kun fra de røde og sorte ledninger.

Derefter skal du bruge et hanstik på 3,5 mm. Jeg brugte denne fra Banggood. Lod den røde ledning fra USB -kablet til den midterste fane (som er spidsen af stikket) og den sorte ledning til fanen med lange ærmer. Se mine fotos for afklaring.

Jeg anbefaler, at du altid tilslutter 3,5 mm -stikket før USB -stikket, da processen med at tilslutte kablet kan få stikket til at kortslutte på tværs af metalstikket.

Trin 7: Om flowsensoren

Om Flow Sensor
Om Flow Sensor
Om Flow Sensor
Om Flow Sensor
Om Flow Sensor
Om Flow Sensor
Om Flow Sensor
Om Flow Sensor

Jeg hentede denne flowsensor fra Banggood for $ 3,87. Inden jeg brugte det, besluttede jeg at undersøge, hvordan det fungerer.

Designet er overraskende enkelt og genialt. Elektronikken er helt forseglet fra vandet. Der er en frit roterende propel, der spinder langsommere eller hurtigere afhængigt af strømningshastigheden. På et tidspunkt på propellen er der en magnet. På ydersiden af sensoren er et lille rum, der indeholder et lille printkort med to komponenter: en modstand og en hall-effekt sensor. Hver gang magneten passerer hall-effektføleren, skifter den mellem høj og lav. Med andre ord skifter den mellem 5V og 0V hver gang propellen roterer.

For at aflæse sensoren anvender vi +5V på den røde ledning, negativ til den sorte ledning og læser det digitale signal fra den gule ledning. På billedet af mit oscilloskop kan du se, hvordan signalet ændres, når strømmen tændes. Først er signalet konstant nul volt. Når strømmen starter, kommer frekvensen af pulser hurtigt op i hastighed og når en stabil tilstand.

Ifølge databladet afgiver sensoren 450 impulser pr. Liter. Dette vil være vigtigt senere, når vi skriver softwaren.

Trin 8: Flow Sensor ledninger

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

Flowsensoren leveres med et 3-benet JST-XH-stik. Dette er ikke ideelt, fordi ledningerne er for korte, og konnektoren har udsatte kontakter, der let kan kortsluttes af omstrejfende vanddråber. Jeg bestilte denne 3,5 mm lydstik kabelsamling fra Digikey. Den er 3 'lang, hvilket er den perfekte længde, og den har fortinnede tråde, hvilket gør det let at lodde. Jeg anbefaler ikke at prøve at bruge en gammel hovedtelefonledning, da de har tendens til at have meget tynd emaljeret ledning, hvilket er næsten umuligt at lodde.

Strømningssensoren har et plastdæksel, der holdes fast af to stjerneskruer. Fjern blot disse skruer, og træk printkortet ud. Det holdes ikke fast med nogen lim, det holdes bare på plads med plastiklåget. Derefter skal du aflodde de tre ledninger ved at varme dem op med et loddejern og løfte dem af, en ad gangen.

Derefter loddes 3,5 mm lydkablet til elektroderne. Jeg foreslår at matche farverne, som jeg gjorde. Denne konfiguration har +5V på spidsen, signal på ringen og jord på ærmet. Dette er den samme konfiguration, der bruges til opladningsporten, fra trin 6. Hvis du ved et uheld sætter opladeren i sensorporten, eller omvendt, vil der ikke være nogen skade på enheden.

Trin 9: Installation af Flow Sensor

Installation af Flow Sensor
Installation af Flow Sensor
Installation af Flow Sensor
Installation af Flow Sensor
Installation af Flow Sensor
Installation af Flow Sensor

Indtil dette tidspunkt har alt vores arbejde fundet sted på værkstedet. Men nu er det tid til at tage på badeværelset!

Først fjernede jeg brusehovedet. Dette afslørede en lille smule rør, der stak ud af væggen, med 1/2 NPS han -gevind. Praktisk set har vores flow -sensor nøjagtig samme gevindstørrelse! Det eneste problem er, at sensoren har han -gevind i begge ender, så vi vil har brug for en hun-til-hun-kobling.

I min lokale isenkræmmerbutik var der 1/2 koblinger i messing, jern og PVC. PVC var den billigste, så jeg fik den. Selvom man set i bakspejlet havde messing eller stål set pænere ud.

Når du har koblingen, skal du blot skrue flowføleren ind i koblingen og derefter skrue den anden ende af koblingen på røret. Flowsensoren har en pil, der angiver den påtænkte strømningsretning. Sørg for, at du ikke installerer det baglæns, ellers kan målingerne være unøjagtige. Til sidst skrues brusehovedet fast på enden af flowføleren.

Jeg går selvfølgelig ud fra, at dit brusebad bruger en 1/2 NPS -tråd, som min gjorde. Hvis dette ikke er tilfældet, skal du have ekstra adaptere.

Pro-tip: Tilføj noget Teflon-blikkenslager tape til alle trådene, før stykkerne skrues sammen for at forhindre lækager. Jeg havde ikke noget ved hånden, men jeg planlægger at tilføje dette i den nærmeste fremtid.

Trin 10: Arduino & Perfboard

Arduino & Perfboard
Arduino & Perfboard
Arduino & Perfboard
Arduino & Perfboard
Arduino & Perfboard
Arduino & Perfboard

Da vi bliver nødt til at lave en masse ledninger, er det en god idé at få et stykke perfboard til at gøre tingene lidt mere ryddelige. Jeg skar et rektangel af perfboard omkring 1 "x 2". Dernæst placerede jeg min Arduino Nano i midten af brættet og markerede, hvor headerstifterne gik igennem. Derefter klippede jeg to længder af kvindelige overskrifter, hver 15 ben lange. Jeg loddet disse på det perfboard, hvor jeg tidligere har markeret. Dette giver os mulighed for at fjerne Arduino til programmering.

Pro-tip: Marker orienteringen af Arduino USB-porten, så du altid tilslutter den til perfboardet på samme måde.

Trin 11: Tilslut alt

Kabelføring alt
Kabelføring alt
Kabelføring alt
Kabelføring alt
Kabelføring alt
Kabelføring alt

Nu er det tid til at lodde alt sammen! Jeg har inkluderet et komplet ledningsdiagram, som du kan følge, eller se mine skrevne trin herunder, hvis du foretrækker en mere guidet tilgang.

Først skar jeg nogle mandlige headerstifter og lodde dem på perfboardet på +5V og jordskinner. Derefter lodde jeg yderligere to hovedstifter tilsluttet stifterne A4 og A5 på Arduino. Disse overskrifter giver os mulighed for at forbinde LCD-skærmen ved hjælp af hun-til-hun-jumpere.

Dernæst lodde jeg et par ledninger fra output fra boost -konverteren til +5V og jordskinner. Dette vil levere strøm til Arduino, LCD'en og flowføleren.

Derefter skar jeg to ledninger til og sluttede dem til terminalerne på trykknappen. Jeg loddet den ene ledning til jordskinnen og den anden til digital pin 3.

Den sidste del til lodning er strømningssensoren. Da vi allerede har monteret et 3,5 mm stik til sensoren, skal vi bare lodde et 3,5 mm hunstik. Først lod jeg tre ledninger - en til hver af fanerne på stikket. Derefter indsatte jeg donkraften gennem kabinettet og sikrede den på plads med en møtrik. Endelig lodde jeg ærmet til jorden, spidsen til +5V og ringen til digital pin 2.

Jeg valgte at bruge digitale ben 2 og 3 til knappen og flowføleren, fordi de er hardware -afbrydelsesnåle. Dette vil gøre det meget lettere at skrive koden.

Nu er vi færdige med at lodde, men vi mangler stadig at tilslutte LCD'en. Da vi lodde overskrifter, har vi bare brug for fire hun-til-hun-springere. Tilslut "Vcc" pin til +5V, "Gnd" pin til jord, "SCL" pin til A5 og "SDA" pin til A4. For at LCD -skærmen kan passe ind i kabinettet, skal vi bøje headerstifterne bagud. At bøje stifterne frem og tilbage flere gange vil udtrætte metallet og få stifterne til at gå i stykker, så jeg anbefaler kun at bøje dem én gang, og gør det med forsigtighed.

Nu er ledningerne færdige!

Trin 12: Programmering

Programmering
Programmering

Nu hvor hardwaren er tilsluttet, kan vi programmere Arduino.

Jeg vil have, at programmet har følgende funktioner:

  • Vis på den første linje et hurtigt opdateret antal af de samlede liter
  • På den anden linje vises de samlede omkostninger ved vandet eller strømningshastigheden
  • Når bruseren kører, skifter trykknappen mellem visning af omkostninger eller strømningshastighed
  • Når bruseren ikke kører, skal trykknappen slette alle data og nulstille skærmen
  • Sensoren skal aflæses ved hjælp af en afbrydelsesrutine for at undgå grove afstemningsmetoder
  • Når vi opdaterer skærmen, bør vi kun opdatere de værdier, der er ændret, frem for at overskrive hele skærmen hver gang (dette ville forårsage mærkbar flimmer)

Programmet følger en enkel struktur. Ved at bruge funktionen millis () kan vi oprette forsinkelser, der faktisk ikke standser udførelsen af programmet. Se denne vejledning for et eksempel på at blinke en LED uden at bruge funktionen delay ().

Funktionen millis () returnerer antallet af millisekunder siden Arduino blev tændt. Ved at oprette en variabel "previousMillis" og trække Millis () - previousMillis () fra, kan vi se den forløbne tid siden previousMillis blev opdateret.

Hvis vi vil have, at der skal ske noget i sekundet, kan vi bruge følgende kodeblok:

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

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

Dette kontrollerer, om forskellen mellem millis () (den aktuelle tid) og foregående Millis (den sidste tid) er større end eller lig med 1000 millisekunder. Hvis det er det, er det første, vi gør, at sætte foregående Millis lig med den aktuelle tid. Derefter udfører vi de yderligere trin, vi ønsker. I dette eksempel skifter vi en LED. Derefter forlader vi denne blok af kode og afslutter resten af loop () -funktionen, før vi går tilbage til starten og gentager det hele igen.

Fordelen ved at bruge denne metode i forhold til funktionen simple delay () er, at delay () lægger et mellemrum mellem instruktionerne, men ikke tager højde for den tid, det tager at udføre de andre instruktioner i loop () -funktionen. Hvis du laver noget, der tager længere tid end bare at blinke en LED, f.eks. Opdatering af en LCD -skærm, er den tid, det tager, ikke ubetydelig, og efter et par cykler vil det tilføje sig. Hvis du opdaterer LCD -skærmen på et ur, ville det hurtigt blive unøjagtigt og falde bagud.

Så nu hvor vi forstår programmets overordnede struktur, er det tid til at indsætte instruktionerne. I stedet for at forklare hver eneste kodelinje her, foreslår jeg, at du først læser det vedlagte rutediagram over, hvilket giver et overblik på højt niveau over, hvad programmet gør.

Når du har set rutediagrammet, skal du kigge på den vedhæftede Arduino -kode. Jeg har kommenteret næsten hver linje for at gøre det klart, hvad hver linje gør.

Der er et par dele i koden, du måske vil ændre. Vigtigst er prisen per liter. I min by koster vandet 0,2523 ¢ per liter. Find følgende linje, og rediger værdien, så den matcher prisen, hvor du bor:

const float COST_PER_LITRE = 0,2523; // pris pr. liter, i cent, fra byens websted

Hvis du foretrækker at bruge gallon frem for liter, skal du ændre alle "LCD.print ()" linjer, der refererer til "L" eller "L/s" til "G" eller "G/s". Slet derefter følgende linje:

const float KONVERTERING = 450,0; // opbevar dette uden kommentarer til liter

… og kommenter denne linje:

const float KONVERTERING = 1703,0; // kommenter dette og slet linjen ovenfor for gallon

Der er endnu en underlighed, du måske har bemærket i min kode. Standard tegnsæt inkluderer ikke "¢" tegnet, og jeg ville ikke bruge dollars, fordi omkostningerne ville vise sig som "$ 0,01" eller mindre for størstedelen af tiden. Derfor blev jeg tvunget til at oprette en brugerdefineret karakter. Følgende byte -array bruges til at repræsentere dette symbol:

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

Efter oprettelse af denne matrix skal specialtegnet "oprettes" og gemmes.

lcd.createChar (0, cent_sign);

Når dette er gjort, bruger vi følgende linje til at udskrive det brugerdefinerede tegn:

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

LCD'et kan indeholde op til 8 brugerdefinerede tegn. Mere information om dette er her. Jeg stødte også på dette nyttige online værktøj, der lader dig tegne det brugerdefinerede tegn ved hjælp af en grafisk grænseflade, og det genererer automatisk det tilpassede byte -array.

Trin 13: Lukning af låget

Lukning af låget
Lukning af låget
Lukning af låget
Lukning af låget
Lukning af låget
Lukning af låget

Endelig er vi næsten færdige!

Det er tid til at proppe al elektronikken ind i kabinettet og håbe, at låget lukker. Men først skal vi vedhæfte 30 mm afstandene. Pakken med standoffs, jeg købte, indeholder ikke nogen, der er så lange, men den kommer med 20 mm og 10 mm, der kan sættes sammen. Jeg skruede fire standoffs ind i hullerne i bunden af kabinettet med fire M3 skruer (se billeder 1 & 2). Sørg for at stramme disse sikkert, men ikke for stramt, eller du risikerer at bryde plastikhuset.

Nu kan vi montere al elektronikken indeni. Jeg fastgjorde opladeren og boost-konverteren til låget med dobbeltsidet tape, som det ses på det tredje billede. Derefter pakkede jeg noget elektrisk tape rundt om det eksponerede metal på de to 3,5 mm stik, bare for at sikre, at intet bliver kortsluttet ved at kontakte stikkene.

Jeg var i stand til at få Arduino til at passe ved at placere den på siden i nederste venstre hjørne med USB -porten mod højre. Jeg brugte mere dobbeltsidet tape til at fastgøre batteriet i bunden af kabinettet under LCD-skærmen.

Endelig, når alt sidder fast mere eller mindre sikkert i kassen, kan låget skrues ned med fire flere M3 -skruer.

Trin 14: Test

Test
Test
Test
Test
Test
Test
Test
Test

Tilslut først 3,5 mm -stikket fra flowføleren. Jeg anbefaler at gøre dette, før enheden tændes, fordi det er muligt for stikket at oprette uønsket forbindelse, når det indsættes.

Tænd derefter for hovedafbryderen. Selvom der ikke løber vand, skal knappen på frontpanelet ikke gøre andet end at rydde det samlede beløb og rydde skærmen. Da summen som standard er nul, ser knappen ikke ud til at gøre noget endnu.

Hvis du tænder for brusebadet, bør totalet begynde at stige. Som standard vises prisen. Hvis du trykker på knappen på frontpanelet, vises strømningshastigheden på bundlinjen. Ved at trykke på knappen på frontpanelet skifter du mellem visning af strømningshastighed og visning af omkostninger, så længe bruseren kører. Når bruseren stopper, nulstilles målingerne ved at trykke på knappen på frontpanelet og rydde skærmen.

Montering

Hvordan du vælger at montere enheden afhænger af dit brusers layout. Nogle brusere kan have en afsats tæt nok på brusehovedet, så du simpelthen kan placere enheden der. I mit brusebad har jeg en kurv fastgjort med sugekopper, som jeg placerede enheden inden i. Hvis du ikke har luksusen som en afsats eller kurv, kan du prøve at holde enheden til væggen med en dobbeltsidet sugekop. Dette vil kun fungere, hvis du bruger et hyldekabinet, der har en glat bagside, eller hvis du har udskrevet mit brugerdefinerede kabinet på en printer med en glasplade. Hvis dit kabinet har en hård bagside (som mit gør), kan du prøve at bruge noget dobbeltsidet tape, selvom dette kan efterlade nogle rester på din brusevæg, hvis du prøver at fjerne enheden.

Fejlfinding

Skærmen er tændt, men baggrundsbelysningen er slukket - sørg for at jumperen er installeret på de to ben på siden af I ² C -modulet

Skærmen er tom, med baggrundsbelysning tændt - kontroller, at I ² C -adressen er korrekt ved at køre I²C -scanneren

Skærmen er tændt, men værdierne forbliver nul - kontroller, at der kommer et signal fra sensoren ved at måle spændingen på pin 2. Hvis der ikke er noget signal, skal du kontrollere, at sensoren er tilsluttet korrekt.

Skærmen er tom med baggrundsbelysning slukket - kontroller, at strømindikatoren på Arduino er tændt, og kontroller, at skærmen har strøm

Skærmen tændes kort, så stopper alt - du har sandsynligvis indstillet spændingen fra boost -konverteren for høj (komponenterne kan ikke klare mere end 5V)

Enheden fungerer, men værdierne er forkerte - sørg for, at den flowmåler, du bruger, har den samme omregningsfaktor på 450 pulser pr. Liter. Forskellige sensorer kan have forskellige værdier.

Trin 15: Begynd nu at spare vand

Forbedringer

Den nuværende version af softwaren fungerer godt nok, men til sidst vil jeg gerne tilføje muligheden for at have forskellige brugere (familiemedlemmer, husfæller osv.) Enheden lagrer hver persons statistik (totalt vand og totalt antal brusere) til vise et gennemsnitligt vandforbrug for hver person. Dette kan tilskynde folk til at konkurrere om at bruge den mindste mængde vand.

Det ville også være fedt at have en måde at eksportere de data, der skal ses i et regneark, så de kunne grafiseres. Så kunne du se, hvilke tider på året folk har hyppigere og længere brusere.

Disse funktioner ville alle kræve brug af EEPROM-Arduino's indbyggede ikke-flygtige hukommelse. Dette ville gøre det muligt at gemme dataene, selv efter at enheden er slukket.

En anden nyttig funktion ville være en batteriindikator. Lige nu er den eneste indikation på, at enheden skal genoplades, når batterihåndteringskortet afbryder strømmen. Det ville være let at tilslutte en ekstra analog indgang for at måle batterispændingen. En spændingsdeler ville ikke engang være nødvendig, da batterispændingen altid er mindre end 5V.

Nogle af disse ideer grænser op til funktionskryp, og derfor udviklede jeg ikke softwaren yderligere.

Resten er op til dig!

Sensors konkurrence
Sensors konkurrence
Sensors konkurrence
Sensors konkurrence

Første præmie i sensorkonkurrencen

Anbefalede: