Inhoudsopgave:

Bespaar water en geld met de douchewatermonitor - Ajarnpa
Bespaar water en geld met de douchewatermonitor - Ajarnpa

Video: Bespaar water en geld met de douchewatermonitor - Ajarnpa

Video: Bespaar water en geld met de douchewatermonitor - Ajarnpa
Video: Wij douchen nu al 2 jaar met een Inventum (pv) boiler van 15 liter..👌🏻 2024, November
Anonim
Bespaar water en geld met de douchewatermonitor
Bespaar water en geld met de douchewatermonitor
Bespaar water en geld met de douchewatermonitor
Bespaar water en geld met de douchewatermonitor
Bespaar water en geld met de douchewatermonitor
Bespaar water en geld met de douchewatermonitor
Bespaar water en geld met de douchewatermonitor
Bespaar water en geld met de douchewatermonitor

Wat verbruikt meer water - een bad of een douche?

Ik zat onlangs over deze vraag na te denken en realiseerde me dat ik eigenlijk niet weet hoeveel water er wordt gebruikt tijdens het douchen. Ik weet dat als ik onder de douche sta soms mijn gedachten afdwalen, denkend aan een cool idee voor een nieuw project of proberen te beslissen wat ik als ontbijt ga gebruiken, terwijl het water gewoon door de afvoer stroomt. Het zou een stuk makkelijker zijn om mijn waterverbruik te verminderen als ik echt wist hoeveel liters ik per keer gebruikte!

Ik deed wat onderzoek en ontdekte dat verschillende douchekoppen overal van 9,5 liter (2,5 gallon) per minuut tot minder dan 6 liter (1,6 gallon) per minuut kunnen gebruiken, als je een stroombegrenzer hebt geïnstalleerd. Een heel oude douche kan nog meer water gebruiken.

Ik besloot een apparaat te ontwerpen en te bouwen dat het totale watervolume per douche, de kosten van het water en het debiet zou weergeven. Ik heb dit apparaat een paar weken geïnstalleerd en het is erg handig om live te zien hoeveel water er wordt gebruikt.

In deze Instructable zal ik uitleggen hoe ik dit heb gebouwd. Je hoeft mijn stappen natuurlijk niet precies te volgen! Het is altijd goed om gebruik te maken van onderdelen die je hebt liggen. Ik heb links toegevoegd naar alle onderdelen die ik heb gebruikt, of een gelijkwaardig onderdeel dat zal werken.

Benodigdheden

(Alle prijzen in USD)

  • Stroomsensor - $ 3,87
  • LCD-scherm - $ 2,29"
  • Arduino Nano - $ 1,59
  • Boost-converter - $ 1,88
  • LiPo-oplader - $ 1,89
  • Waterdichte tuimelschakelaar - $ 0,93 (niet de exacte die ik heb gebruikt, maar het zou moeten werken)
  • Waterdichte drukknop - $ 1,64
  • Afstandhouders, M3-schroeven en moeren - $ 6,99
  • 2X vrouwelijke 3,5 mm-aansluiting - $ 2,86 per stuk.
  • Mannelijke 3,5 mm-stekker - $ 1,48"
  • 3,5 mm 3'-kabelconstructie - $ 3,57"
  • USB-kabelassemblage - $ 1,74"
  • 1/2" NPS vrouw-naar-vrouw koppeling - $1,88
  • 500mAh 3.7V LiPo-batterij - $ 3.91

Gereedschappen en algemene benodigdheden

  • Soldeerbout en soldeer
  • Draad
  • Draadsnijders
  • Draadstrippers
  • Dubbelzijdige tape
  • kruiskopschroevendraaier
  • 3D-printer (optioneel)

Stap 1: Waterdicht maken

Waterdichting
Waterdichting

Het moeilijkste aspect van dit project is om het geheel waterdicht te maken. Omdat het onder een douche zal staan, moet het bestand zijn tegen extreme vochtigheid en af en toe een plons. Ongeveer 75% van de totale tijd die aan dit project werd besteed, was het uitzoeken van dit onderdeel.

Zoals ik het zie, zijn er twee keuzes: ontwerp een op maat gemaakte 3D-geprinte behuizing, of probeer het te laten werken met een kant-en-klare behuizing. Omdat ik onlangs mijn eigen 3D-printer heb gekregen, heb ik besloten om voor de eerste optie te gaan.

Als je geen toegang hebt tot een 3D-printer, zijn hier enkele kant-en-klare behuizingen waarvan ik heb ontdekt dat ze waterdicht zijn en waarschijnlijk werken. Let op: ik heb geen van deze behuizingen gekocht, dus ik kan niet garanderen dat alle componenten erin passen!

Banggood - 100x68x50mm doos met transparant deksel - $ 5,35

Digikey - 130x80x70mm doos met transparant deksel - $ 11.65

Voor dit punt, als ik naar de behuizing verwijs, heb ik het over mijn 3D-geprinte exemplaar.

Stap 2: Mijn aangepaste 3D-geprinte behuizing

Mijn aangepaste 3D-geprinte behuizing!
Mijn aangepaste 3D-geprinte behuizing!
Mijn aangepaste 3D-geprinte behuizing!
Mijn aangepaste 3D-geprinte behuizing!
Mijn aangepaste 3D-geprinte behuizing!
Mijn aangepaste 3D-geprinte behuizing!

Na enkele uren in Fusion 360 te hebben gewerkt, kwam ik op deze behuizing. Het heeft drie ronde uitsparingen voor twee vrouwelijke 3,5 mm-aansluitingen en een tuimelschakelaar. Het deksel heeft een gat van 16 mm voor de kortstondige drukknop en een rechthoekige uitsparing voor het scherm, evenals de vier montagegaten om het scherm op zijn plaats te houden. Het deksel is een apart onderdeel en heeft een lip om te voorkomen dat vocht door de naad binnendringt. De vier gaten op de hoeken van de doos zijn om het deksel op te houden met afstandhouders van 30 mm. Alle schroefgaten hebben een diameter van 3 mm, wat past op een M3-schroef.

U kunt de STL-bestanden downloaden van mijn Thingiverse-pagina. Het kan worden afgedrukt zonder vlotten of steunen, maar ik heb steunen gebruikt om veilig te zijn. Ik heb ook 100% infill gebruikt. Omdat de muren zo dun zijn, verandert het verminderen van het opvulpercentage niet echt de totale printtijd of het totale materiaal, dus ik heb het op 100% gehouden.

Om het scherm zichtbaar te maken, kan het ofwel uitsteken door een uitsparing in het deksel van de behuizing, ofwel achter een transparant venster worden geplaatst. Omdat het scherm niet aan vocht mag worden blootgesteld, zitten we met de tweede optie. Helaas staat 3D-printen met transparant filament nog in de kinderschoenen, dus we zullen een beetje creatief moeten zijn.

Mijn oplossing was om een rechthoekige uitsparing in het deksel te maken en een stuk transparant plastic uit een groenteverpakking te lijmen. Deze techniek kan zelfs worden gebruikt als u mijn aangepaste behuizing niet gebruikt; snijd eenvoudig een rechthoek uit met een mes of een Dremel. Als je een behuizing met een transparante deksel gebruikt, is dit natuurlijk helemaal niet nodig.

De beste bron voor transparant plastic die ik heb gevonden, is de verpakking van producten. Meestal worden spinazie of andere bladgroenten geleverd in grote doorzichtige plastic bakjes. In mijn geval gebruikte ik de verpakking van een "pepermedley".

Ik wilde een overhang van 5 mm om voldoende oppervlakte te hebben om te lijmen, dus knipte ik een rechthoek van 27 x 77 mm uit doorzichtig plastic. Ik moest de hoeken een beetje inkorten zodat de schroeven zouden passen. Ik spoot een lijn superlijm rond de omtrek van de uitsparing en plaatste het doorzichtige plastic erop. Ik heb daarna een beetje meer superlijm rond de rand toegevoegd om er zeker van te zijn dat het verzegeld was.

Pro-tip: plaats het onderdeel voor een kleine ventilator terwijl de lijm aan het drogen is. Als secondelijm droogt, heeft het de neiging om een smerig wit residu achter te laten, wat we zeker niet willen op ons transparante venster. Ik gebruikte een oude 12V-ventilator van een computervoeding. Ik liet de lijm 12 uur zitten om er zeker van te zijn dat hij helemaal droog was.

Stap 3: Het LCD-scherm monteren

Het LCD-scherm monteren
Het LCD-scherm monteren
Het LCD-scherm monteren
Het LCD-scherm monteren
Het LCD-scherm monteren
Het LCD-scherm monteren

Nadat het transparante venster is opgedroogd, kan het LCD-scherm worden gemonteerd. Het LCD-scherm is een super populair 16x2 karakterdisplay, met de I²C "rugzak" voorgesoldeerd aan de achterkant. Ik raad ten zeerste aan om dit scherm met de I²C-interface te krijgen. Het bedraden van alle parallelle lijnen is behoorlijk vervelend en introduceert meer kans op fouten - de I²C-versie heeft slechts twee draden voor stroom en twee draden voor signaal.

Ik heb vier afstandhouders van 10 mm gebruikt om het scherm te monteren. De afstandhouders hebben elk een mannelijke draad aan het ene uiteinde en een vrouwelijke draad aan het andere. Ik heb de mannelijke draad door de gaten in het LCD-scherm gestoken en op elk daarvan een M3-moer vastgedraaid. Daarna gebruikte ik vier M3-schroeven om de vrouwelijke uiteinden van de afstandhouders door het deksel van de behuizing te bevestigen. Ik heb dit pakket afstandhouders met de 10 mm om het LCD-scherm te monteren en langere om het deksel op de basis te houden. Bovendien zijn er M3-schroeven en moeren, zodat u geen extra hardware hoeft te kopen.

Zorg ervoor dat de moeren erg strak zitten, zodat de afstandhouders niet draaien wanneer u de schroeven aandraait. Zorg er ook voor dat u de schroeven niet te vast aandraait, anders kan het plastic deksel vervormen en niet goed afsluiten.

De rij van 16 header-pinnen op het LCD-scherm moet aan de bovenkant zitten - zorg ervoor dat u het LCD-scherm niet ondersteboven monteert!

Stap 4: De Momentary-knop monteren

De tijdelijke knop monteren
De tijdelijke knop monteren
De tijdelijke knop monteren
De tijdelijke knop monteren
De tijdelijke knop monteren
De tijdelijke knop monteren

Ik besloot om deze ziek uitziende chromen knop op het voorpaneel te gebruiken. Ik heb ze in eerdere projecten gebruikt en ik hou echt van de manier waarop ze eruit zien. Ze worden verondersteld waterdicht te zijn en worden geleverd met een rubberen ring om te voorkomen dat vocht via de schroefdraden de behuizing binnendringt.

Deze stap is vrij eenvoudig. Draai de moer los, maar houd de rubberen ring erop. Steek de knop door het gat in het deksel en draai de moer vanaf de achterkant vast. Voorkom dat u de moer te vast aandraait, anders wordt de rubberen ring verpletterd en heeft deze zijn doel niet meer.

Stap 5: Stroom- en laadcircuit

Stroom- en laadcircuit
Stroom- en laadcircuit
Stroom- en laadcircuit
Stroom- en laadcircuit
Stroom- en laadcircuit
Stroom- en laadcircuit

Nu zullen we de componenten van de batterijvoeding samenstellen. Dit omvat de batterij, hoofdschakelaar, batterijbewakings-/oplaadkaart en de boost-converter.

De batterij die ik heb gebruikt is een 3.7V 1500 mAh eencellige lithium-ionbatterij. De specifieke die ik gebruikte, werd getrokken uit een kapotte Playstation-controller. Elke eencellige Li-Ion- of LiPo-batterij werkt, zolang deze maar in uw behuizing past. Dit type batterij is meestal erg dun en plat, dus je zou er waarschijnlijk zonder problemen een kunnen gebruiken die twee keer zo groot is als de mijne. Een 18650-cel zou werken, maar hij past niet in mijn aangepaste behuizing, dus je moet er zelf een ontwerpen of een kant-en-klare behuizing gebruiken. Indien mogelijk raad ik aan om een geborgen batterij te gebruiken (zoals ik deed) omdat het verzenden van batterijen vaak duur is!

De batterij moet eerst op het TP4056-laadbord worden gesoldeerd. Als je wilt, kun je voor het gemak een JST RCY-connector aan de batterij en oplader solderen (ik heb dit gedaan), maar het is niet nodig. Let op de juiste polariteit zoals aangegeven door de markeringen op het laadbord, aangezien het bord niet beveiligd is tegen omgekeerde batterijpolariteit!

Soldeer vervolgens een draad van de positieve uitgang van de lader (bevindt zich naast de positieve batterijdraad) naar de positieve ingang op de boost-converter. Soldeer vervolgens een draad van de negatieve uitgang (bevindt zich naast de negatieve batterijdraad) naar de gemeenschappelijke (middelste) pin van de hoofdtuimelschakelaar. Soldeer ten slotte een draad van de normaal open pin van de schakelaar naar de negatieve ingang van de boost-converter. Als u een multimeter op de uitgang van de boost-converter aansluit en de hoofdschakelaar aanzet, moet er een spanning worden weergegeven.

Omdat onze Arduino, LCD-scherm en flowsensor allemaal 5V nodig hebben, moeten we de output van de boost-converter instellen op 5V. Dit wordt bereikt door met een kleine schroevendraaier aan de knop op de potmeter te draaien. Met de hoofdschakelaar ingeschakeld, de batterij aangesloten en de multimeter aangesloten op de uitgang van de boost-converter, draai je langzaam aan de potentiometer totdat de uitgang 5V aangeeft. Het zal moeilijk zijn om een uitlezing van precies 5.000V te krijgen, maar streef naar een spanning tussen 4,9V en 5,1V.

Omdat mijn aangepaste behuizing met verschillende schroeven wordt gesloten, willen we de behuizing niet elke keer moeten openen als deze moet worden opgeladen. Ik heb hiervoor een 3,5 mm koptelefoonaansluiting gebruikt. De exacte connector die ik heb gebruikt, is deze van Digikey (daarvoor zijn de uitsparingen in mijn behuizing geschikt), maar deze van Banggood zou ook moeten werken.

Eerst heb ik de connector in het onderste gat in de behuizing gestoken. Aangezien deze het grootste deel van de tijd uit het stopcontact zal worden gehaald en daarom gevoelig is voor binnendringend vocht, kunt u deze het beste op de bodem monteren om te voorkomen dat er water naar binnen druppelt. Na het installeren van de borgring en het aandraaien van de moer, soldeerde ik twee draden aan de "tip" en "sleeve" lipjes op de connector. De pin-out van de connector wordt getoond in een van mijn geannoteerde afbeeldingen. Ik heb het andere uiteinde van de "sleeve" -draad gesoldeerd aan de negatieve ingang van de oplader, naast de micro-USB-poort. Ten slotte heb ik de "tip" -draad gesoldeerd aan de +5V-pad, aan de andere kant van de USB-poort. De USB-poort op de oplader zal niet worden gebruikt, omdat het moeilijk zou zijn om de USB-poort in de behuizing te laten doordringen zonder vocht binnen te laten.

Stap 6: Oplaadkabel

Oplaadkabel
Oplaadkabel
Oplaadkabel
Oplaadkabel
Oplaadkabel
Oplaadkabel

Omdat we een 3,5 mm audio-aansluiting gebruiken als onze oplaadpoort, moeten we een adapterkabel maken met een mannelijke 3,5 mm-stekker aan het ene uiteinde en een USB A-stekker aan het andere uiteinde. Hierdoor kunnen we elke generieke oplader voor mobiele apparaten (zoals een iPhone-oplader) gebruiken om dit apparaat op te laden.

Je zou een USB-kabel kunnen kopen met een USB A-connector aan het ene uiteinde en vertinde draden aan het andere uiteinde, maar als je op mij lijkt, heb je waarschijnlijk een dozijn willekeurige USB-kabels rondslingeren die je niet nodig hebt. In plaats van een USB-kabel te kopen, kocht ik gewoon een micro-USB naar USB A-kabel die ik niet nodig had en knipte de micro-USB-connector eraf.

Vervolgens heb ik de witte mantel van de kabel gestript om slechts twee draden binnenin te onthullen: een rode en een zwarte draad. Sommige USB-kabels hebben vier draden: rood, zwart, groen en wit. De groene en witte zijn voor gegevensoverdracht en kunnen worden genegeerd. Strip alleen de isolatie van de rode en zwarte draden.

Vervolgens hebt u een mannelijke 3,5 mm-stekker nodig. Ik heb deze van Banggood gebruikt. Soldeer de rode draad van de USB-kabel naar het middelste lipje (dat is de punt van de connector) en de zwarte draad naar het lipje met lange mouwen. Zie mijn foto's voor verduidelijking.

Ik raad aan om altijd de 3,5 mm-stekker in het stopcontact te steken vóór de USB-stekker, omdat het proces van het aansluiten van de kabel ertoe kan leiden dat de stekker kortsluiting maakt over de metalen aansluiting.

Stap 7: Over de flowsensor

Over de stroomsensor
Over de stroomsensor
Over de stroomsensor
Over de stroomsensor
Over de stroomsensor
Over de stroomsensor
Over de stroomsensor
Over de stroomsensor

Ik heb deze flowsensor van Banggood opgehaald voor $ 3,87. Voordat ik het ging gebruiken, besloot ik te onderzoeken hoe het werkt.

Het ontwerp is verrassend eenvoudig en ingenieus. De elektronica is volledig afgesloten van het water. Er is een vrij draaiende propeller die langzamer of sneller draait, afhankelijk van de stroomsnelheid. Op een punt op de propeller zit een magneet. Aan de buitenkant van de sensor bevindt zich een klein compartiment met een kleine print met twee componenten: een weerstand en een hall-effectsensor. Elke keer dat de magneet de hall-effectsensor passeert, schakelt hij tussen hoog en laag. Met andere woorden, het schakelt tussen 5V en 0V elke keer dat de propeller draait.

Om de sensor te lezen, passen we +5V toe op de rode draad, negatief op de zwarte draad en lezen we het digitale signaal van de gele draad. Op de foto van mijn oscilloscoop kun je zien hoe het signaal verandert als de stroom wordt ingeschakeld. In het begin is het signaal constant nul volt. Wanneer de stroom begint, komt de frequentie van pulsen snel op snelheid en bereikt een stabiele toestand.

Volgens de datasheet geeft de sensor 450 pulsen per liter af. Dit zal later belangrijk zijn wanneer we de software schrijven.

Stap 8: Bedrading flowsensor

Stroomsensor bedrading
Stroomsensor bedrading
Stroomsensor bedrading
Stroomsensor bedrading
Stroomsensor bedrading
Stroomsensor bedrading
Stroomsensor bedrading
Stroomsensor bedrading

De flowsensor wordt geleverd met een 3-pins JST-XH-connector. Dit is niet ideaal omdat de draden te kort zijn en de connector blootliggende contacten heeft die gemakkelijk kunnen worden kortgesloten door verdwaalde waterdruppels. Ik heb deze 3,5 mm audiostekkerkabel bij Digikey besteld. Het is 3' lang, wat de perfecte lengte is, en het heeft vertinde draden, waardoor het gemakkelijk te solderen is. Ik raad niet aan om een oud koptelefoonsnoer te gebruiken, omdat die meestal een zeer dunne geëmailleerde draad hebben, die bijna onmogelijk te solderen is.

De flowsensor heeft een plastic afdekking, die wordt vastgehouden door twee kruiskopschroeven. Verwijder eenvoudig deze schroeven en trek de printplaat eruit. Het wordt niet met lijm vastgehouden, het wordt gewoon op zijn plaats gehouden met het plastic deksel. Desoldeer vervolgens de drie draden door ze op te warmen met een soldeerbout en ze een voor een op te tillen.

Soldeer vervolgens de 3,5 mm audiokabel aan de pads. Ik stel voor om de kleuren te matchen zoals ik deed. Deze configuratie heeft +5V op de punt, signaal op de ring en aarde op de huls. Dit is dezelfde configuratie die wordt gebruikt voor de oplaadpoort, vanaf stap 6. Als u de oplader per ongeluk in de sensorpoort steekt, of omgekeerd, is er geen schade aan het apparaat.

Stap 9: De flowsensor installeren

De flowsensor installeren
De flowsensor installeren
De flowsensor installeren
De flowsensor installeren
De flowsensor installeren
De flowsensor installeren

Tot nu toe heeft al ons werk in de werkplaats plaatsgevonden. Maar nu is het tijd om naar de badkamer te gaan!

Eerst heb ik de douchekop verwijderd. Dit onthulde een kort stukje pijp dat uit de muur stak, met 1/2 NPS buitendraad. Handig is dat onze flowsensor exact dezelfde draadmaat heeft! Het enige probleem is dat de sensor aan beide uiteinden buitendraad heeft, dus we zullen een vrouw-naar-vrouw koppeling nodig.

Bij mijn plaatselijke ijzerhandel waren er 1/2 -koppelingen in messing, ijzer en PVC. De PVC-koppeling was de goedkoopste, dus die heb ik gekocht. Hoewel achteraf gezien, de messing of stalen koppelingen er mooier uit zouden hebben gezien.

Zodra u de koppeling hebt, schroeft u eenvoudig de flowsensor in de koppeling en schroeft u vervolgens het andere uiteinde van de koppeling op de buis. De flowsensor heeft een pijl om de beoogde stroomrichting aan te geven. Zorg ervoor dat u het niet achterstevoren installeert, anders kunnen de metingen onnauwkeurig zijn. Schroef tot slot de douchekop op het uiteinde van de flowsensor.

Natuurlijk ga ik ervan uit dat je douche een 1/2 NPS-schroefdraad gebruikt, zoals de mijne deed. Als dit niet het geval is, moet je extra adapters kopen.

Pro-tip: voeg wat teflon loodgieterstape toe aan alle schroefdraden voordat u de stukken aan elkaar schroeft om lekken te voorkomen. Ik had er geen bij de hand, maar ik ben van plan dit in de nabije toekomst toe te voegen.

Stap 10: Arduino & Perfboard

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

Aangezien we veel bedrading zullen moeten doen, is het een goed idee om een stuk perfboard te kopen om de zaken een beetje netter te maken. Ik sneed een rechthoek van perfboard ongeveer 1 "bij 2". Vervolgens plaatste ik mijn Arduino Nano in het midden van het bord en markeerde waar de header-pinnen doorheen gingen. Daarna sneed ik twee lengtes vrouwelijke headers, elk 15 pinnen lang. Ik gesoldeerd deze op de perfboard waar ik eerder gemarkeerd. Hierdoor kunnen we de Arduino verwijderen voor programmeren.

Pro-tip: markeer de oriëntatie van de USB-poort van de Arduino, zodat je hem altijd op dezelfde manier in het perfboard steekt.

Stap 11: Alles bedraden

Alles bedraden
Alles bedraden
Alles bedraden
Alles bedraden
Alles bedraden
Alles bedraden

Nu is het tijd om alles aan elkaar te solderen! Ik heb een volledig bedradingsschema bijgevoegd, dat u kunt volgen, of bekijk mijn geschreven stappen hieronder als u de voorkeur geeft aan een meer begeleide aanpak.

Eerst sneed ik enkele mannelijke header-pinnen en soldeerde ze op het perfboard op de +5V en grondrails. Daarna heb ik nog twee header-pinnen gesoldeerd die zijn aangesloten op pinnen A4 en A5 op de Arduino. Met deze headers kunnen we het LCD-scherm verbinden met behulp van vrouwelijke-naar-vrouw jumpers.

Vervolgens heb ik een paar draden gesoldeerd van de uitgang van de boost-converter naar de +5V en grondrails. Dit levert stroom aan de Arduino, het LCD-scherm en de flowsensor.

Daarna knipte ik twee draden door en verbond ze met de klemmen van de drukknop. Ik heb een draad aan de grondrail gesoldeerd en de andere aan digitale pin 3.

Het laatste onderdeel om te solderen is de flowsensor. Omdat we al een 3,5 mm-stekker op de sensor hebben aangesloten, hoeven we alleen een vrouwelijke 3,5 mm-aansluiting te solderen. Eerst heb ik drie draden gesoldeerd - één aan elk van de lipjes op de aansluiting. Daarna heb ik de krik door de behuizing gestoken en met een moer op zijn plaats vastgezet. Ten slotte heb ik de huls aan aarde gesoldeerd, de punt aan +5V en de ring aan digitale pin 2.

Ik heb ervoor gekozen om digitale pinnen 2 en 3 te gebruiken voor de knop en de flowsensor omdat het hardware-interruptpinnen zijn. Dit maakt het veel gemakkelijker om de code te schrijven.

Nu zijn we klaar met solderen, maar we moeten het LCD-scherm nog aansluiten. Omdat we headers hebben gesoldeerd, hebben we slechts vier vrouw-naar-vrouw jumpers nodig. Verbind de "Vcc"-pin met +5V, de "Gnd"-pin met aarde, de "SCL"-pin met A5 en de "SDA"-pin met A4. Om ervoor te zorgen dat het LCD-scherm in de behuizing past, moeten we de header-pinnen naar achteren buigen. Door de pinnen meerdere keren heen en weer te buigen, wordt het metaal vermoeid en breken de pinnen, dus ik raad aan om ze slechts één keer te buigen, en doe dit voorzichtig.

Nu is de bedrading klaar!

Stap 12: Programmeren

Programmeren
Programmeren

Nu alle hardware is aangesloten, kunnen we de Arduino programmeren.

Ik wil dat het programma de volgende functies heeft:

  • Geef op de eerste regel een snel bijgewerkte telling van het totale aantal liters weer
  • Geef op de tweede regel de totale kosten van het water of het debiet weer
  • Wanneer de douche loopt, schakelt de drukknop tussen het weergeven van de kosten of het debiet
  • Als de douche niet loopt, moet de drukknop alle gegevens wissen en het scherm resetten
  • De sensor moet worden gelezen met behulp van een onderbrekingsroutine om grove pollingmethoden te voorkomen
  • Bij het bijwerken van het scherm moeten we alleen de waarden bijwerken die zijn gewijzigd, in plaats van elke keer het hele scherm te overschrijven (dit zou merkbare flikkeringen veroorzaken)

Het programma volgt een eenvoudige structuur. Door de millis()-functie te gebruiken, kunnen we vertragingen creëren die de uitvoering van het programma niet echt stoppen. Zie deze tutorial voor een voorbeeld van het knipperen van een LED zonder de functie delay() te gebruiken.

De functie millis() retourneert het aantal milliseconden sinds de Arduino is ingeschakeld. Door een variabele " previousMillis " te maken en Millis() - previousMillis() af te trekken, kunnen we de verstreken tijd zien sinds previousMillis is bijgewerkt.

Als we willen dat er één per seconde iets gebeurt, kunnen we het volgende codeblok gebruiken:

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

vorigeMillis = millis(); toggleLED(); }

Hiermee wordt gecontroleerd of het verschil tussen millis() (de huidige tijd) en previousMillis (de laatste tijd) groter is dan of gelijk is aan 1000 milliseconden. Als dat zo is, stellen we eerst previousMillis gelijk aan de huidige tijd. Vervolgens voeren we alle extra stappen uit die we willen. In dit voorbeeld schakelen we een LED om. Daarna verlaten we dit codeblok en voltooien we de rest van de loop()-functie, voordat we teruggaan naar het begin en alles opnieuw herhalen.

Het voordeel van het gebruik van deze methode ten opzichte van de eenvoudige delay()-functie is dat delay() een tijdsinterval tussen de instructies plaatst, maar geen rekening houdt met de tijd die nodig is om de andere instructies in de loop()-functie uit te voeren. Als je iets doet dat langer duurt dan alleen het knipperen van een LED, zoals het bijwerken van een LCD-scherm, is de tijd die het kost niet te verwaarlozen en na een paar cycli zal het oplopen. Als u het LCD-scherm op een klok bijwerkt, zou het snel onnauwkeurig worden en achterop raken.

Dus nu we de algemene structuur van het programma begrijpen, is het tijd om de instructies in te voegen. In plaats van hier elke regel code uit te leggen, raad ik u aan eerst het bijgevoegde stroomschema te lezen, dat een algemeen overzicht geeft van wat het programma doet.

Als je het stroomschema hebt gezien, bekijk dan de bijgevoegde Arduino-code. Ik heb bijna elke regel becommentarieerd om duidelijk te maken wat elke regel doet.

Er zijn een paar delen in de code die u mogelijk wilt wijzigen. Het belangrijkste is de prijs per liter. In mijn stad kost het water 0,2523 per liter. Zoek de volgende regel en wijzig die waarde zodat deze overeenkomt met de kosten waar u woont:

const float COST_PER_LITRE = 0.2523; // kosten per liter, in centen, van de website van de stad

Als u liever gallons dan liters gebruikt, wijzigt u alle "LCD.print()"-regels die verwijzen naar "L" of "L/s" in "G" of "G/s". Verwijder vervolgens de volgende regel:

const float CONVERSIE = 450,0; // bewaar dit zonder commentaar voor liters

…en verwijder commentaar op deze regel:

const float CONVERSIE = 1703.0; // verwijder dit commentaar en verwijder de regel hierboven voor gallons

Er is nog een eigenaardigheid die je misschien hebt opgemerkt in mijn code. De standaardtekenset bevat niet het "¢"-teken en ik wilde geen dollars gebruiken, omdat de kosten het grootste deel van de tijd als "$ 0,01" of minder zouden verschijnen. Daarom moest ik een aangepast personage maken. De volgende byte-array wordt gebruikt om dit symbool weer te geven:

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

Nadat deze array is gemaakt, moet het speciale teken worden "gemaakt" en opgeslagen.

lcd.createChar (0, cent_sign);

Zodra dit is gebeurd, gebruiken we de volgende regel om het aangepaste teken af te drukken:

lcd.schrijven(byte(0)); // print cententeken (¢)

Het LCD-scherm kan maximaal 8 aangepaste tekens bevatten. Meer informatie hierover staat hier. Ik kwam ook deze handige online tool tegen waarmee je het aangepaste teken kunt tekenen met behulp van een grafische interface, en het zal automatisch de aangepaste byte-array genereren.

Stap 13: Het deksel sluiten

Het deksel sluiten
Het deksel sluiten
Het deksel sluiten
Het deksel sluiten
Het deksel sluiten
Het deksel sluiten

Eindelijk, we zijn bijna klaar!

Het is tijd om alle elektronica in de behuizing te proppen en te hopen dat het deksel sluit. Maar eerst moeten we de afstandhouders van 30 mm bevestigen. Het pakket afstandhouders dat ik heb gekocht, bevat geen afstandhouders die zo lang zijn, maar het wordt geleverd met 20 mm en 10 mm die aan elkaar kunnen worden bevestigd. Ik heb vier afstandhouders in de gaten aan de onderkant van de behuizing geschroefd met vier M3-schroeven (zie afbeeldingen 1 & 2). Zorg ervoor dat u deze stevig vastdraait, maar niet te strak, anders loopt u het risico de plastic behuizing te breken.

Nu kunnen we alle elektronica erin passen. Ik heb de oplader en de boost-converter met dubbelzijdig plakband aan het deksel bevestigd, zoals te zien is in de derde afbeelding. Daarna heb ik wat isolatietape om het blootliggende metaal op de twee 3,5 mm-aansluitingen gewikkeld, om er zeker van te zijn dat er niets wordt kortgesloten door contact met de connectoren.

Ik kon de Arduino passend maken door hem op zijn kant te leggen, in de linkerbenedenhoek, met de USB-poort naar rechts gericht. Ik heb meer dubbelzijdig plakband gebruikt om de batterij aan de onderkant van de behuizing onder het LCD-scherm te bevestigen.

Eindelijk, als alles min of meer stevig in de doos zit, kan het deksel worden vastgeschroefd met nog vier M3-schroeven.

Stap 14: Testen

Testen
Testen
Testen
Testen
Testen
Testen
Testen
Testen

Sluit eerst de 3,5 mm-connector van de flowsensor aan. Ik raad aan om dit te doen voordat het apparaat wordt aangezet, omdat het mogelijk is dat de stekker een ongewenste verbinding maakt tijdens het insteken.

Zet vervolgens de hoofdschakelaar aan. Hoewel er geen water stroomt, zou de knop op het voorpaneel niets anders moeten doen dan het totaal wissen en het scherm wissen. Aangezien het totaal standaard nul is, lijkt de knop nog niets te doen.

Als je de douche aanzet, zou het totaal moeten toenemen. Standaard worden de kosten weergegeven. Als u op de knop op het voorpaneel drukt, wordt het debiet weergegeven op de onderste regel. Door op de knop op het voorpaneel te drukken, wordt geschakeld tussen het tonen van het debiet en het tonen van de kosten, zolang de douche loopt. Zodra de douche stopt, worden de metingen gereset en wordt het scherm gewist door op de knop op het voorpaneel te drukken.

Montage

Hoe je het apparaat monteert, hangt af van de indeling van je douche. Sommige douches hebben een richel die dicht genoeg bij de douchekop ligt, zodat u het apparaat daar eenvoudig kunt plaatsen. In mijn douche heb ik een mand bevestigd met zuignappen waar ik het apparaat in heb geplaatst. Als je niet de luxe hebt van een richel of mand, kun je proberen het apparaat met een dubbelzijdige zuignap tegen de muur te houden. Dit werkt alleen als je een kant-en-klare behuizing gebruikt met een gladde achterkant, of als je mijn aangepaste behuizing hebt afgedrukt op een printer met een glazen bouwplaat. Als uw behuizing een ruwe achterkant heeft (zoals de mijne), kunt u proberen dubbelzijdig plakband te gebruiken, hoewel dit wat residu op uw douchewand kan achterlaten als u het apparaat probeert te verwijderen.

Probleemoplossen

Het scherm is aan, maar de achtergrondverlichting is uit - zorg ervoor dat de jumper is geïnstalleerd op de twee pinnen aan de zijkant van de I ² C-module

Scherm is leeg, met achtergrondverlichting aan - controleer of het I²C-adres correct is door de I²C-scanner te gebruiken

Het scherm is aan, maar de waarden blijven nul - controleer of er een signaal van de sensor komt door de spanning op pin 2 te meten. Als er geen signaal is, controleer dan of de sensor goed is aangesloten.

Scherm is leeg met achtergrondverlichting uit - controleer of de stroom-LED op de Arduino aan is en controleer of het scherm stroom heeft

Scherm gaat even aan, dan stopt alles - je hebt waarschijnlijk de spanning van de boost converter te hoog ingesteld (de componenten kunnen niet meer dan 5V aan)

Het apparaat werkt, maar de waarden zijn verkeerd - zorg ervoor dat de flowsensor die u gebruikt dezelfde conversiefactor heeft van 450 pulsen per liter. Verschillende sensoren kunnen verschillende waarden hebben.

Stap 15: Begin nu met water besparen

Verbeteringen

De huidige versie van de software werkt goed genoeg, maar uiteindelijk zou ik de mogelijkheid willen toevoegen om verschillende gebruikers (gezinsleden, huisgenoten, enz.) te hebben. Het apparaat zou de statistieken van elke persoon (totaal water en totaal aantal douches) opslaan om een gemiddeld waterverbruik voor elke persoon weergeven. Dit zou mensen kunnen aanmoedigen om te concurreren om zo min mogelijk water te gebruiken.

Het zou ook cool zijn om een manier te hebben om de gegevens te exporteren om ze in een spreadsheet te bekijken, zodat ze in een grafiek kunnen worden weergegeven. Dan zou je kunnen zien in welke tijden van het jaar mensen vaker en langer douchen.

Deze functies vereisen allemaal het gebruik van EEPROM - het ingebouwde niet-vluchtige geheugen van de Arduino. Hierdoor kunnen de gegevens worden bewaard, zelfs nadat het apparaat is uitgeschakeld.

Een andere handige functie is een batterij-indicator. Op dit moment is de enige indicatie dat het apparaat moet worden opgeladen, wanneer het batterijbeheerbord de stroom uitschakelt. Het zou makkelijk zijn om een extra analoge ingang aan te sluiten om de accuspanning te meten. Een spanningsdeler zou niet eens nodig zijn, aangezien de accuspanning altijd lager is dan 5V.

Sommige van deze ideeën grenzen aan feature creep, daarom heb ik de software niet verder ontwikkeld.

De rest is aan jou!

Sensoren wedstrijd
Sensoren wedstrijd
Sensoren wedstrijd
Sensoren wedstrijd

Eerste prijs in de Sensors-wedstrijd

Aanbevolen: