Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Hydroizolacja
- Krok 2: Moja niestandardowa obudowa z nadrukiem 3D
- Krok 3: Montaż ekranu LCD
- Krok 4: Montaż przycisku chwilowego
- Krok 5: Obwód zasilania i ładowania
- Krok 6: Kabel do ładowania
- Krok 7: Informacje o czujniku przepływu
- Krok 8: Okablowanie czujnika przepływu
- Krok 9: Instalacja czujnika przepływu
- Krok 10: Arduino i płyta perforowana
- Krok 11: Okablowanie wszystkiego
- Krok 12: Programowanie
- Krok 13: Zamykanie pokrywy
- Krok 14: Testowanie
- Krok 15: Teraz zacznij oszczędzać wodę
Wideo: Oszczędzaj wodę i pieniądze dzięki monitorowi wody pod prysznicem: 15 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
Która zużywa więcej wody - kąpiel czy prysznic?
Ostatnio zastanawiałem się nad tym pytaniem i zdałem sobie sprawę, że właściwie nie wiem, ile wody zużywam, kiedy biorę prysznic. Wiem, że kiedy jestem pod prysznicem, czasami mój umysł błądzi, myśląc o nowym, fajnym pomyśle na projekt lub próbując zdecydować, co zjeść na śniadanie, podczas gdy woda po prostu spływa do kanalizacji. Byłoby o wiele łatwiej zmniejszyć zużycie wody, gdybym faktycznie wiedziała, ile litrów używam za każdym razem!
Zrobiłem trochę badań i odkryłem, że różne głowice prysznicowe mogą zużywać od 9,5 litra (2,5 galona) na minutę do mniej niż 6 litrów (1,6 galona) na minutę, jeśli masz zainstalowany ogranicznik przepływu. Bardzo stary prysznic przydałby się jeszcze więcej wody.
Postanowiłem zaprojektować i zbudować urządzenie, które wyświetlałoby całkowitą ilość wody zużytej na prysznic, koszt wody i natężenie przepływu. Mam to urządzenie zainstalowane od kilku tygodni i bardzo przydatne jest odczytywanie na żywo ilości zużytej wody.
W tej instrukcji wyjaśnię, jak to zbudowałem. Oczywiście nie musisz dokładnie podążać za moimi krokami! Zawsze dobrze jest skorzystać z części, które masz w pobliżu. Dołączyłem linki do wszystkich części, których użyłem, lub równoważnej części, która będzie działać.
Kieszonkowe dzieci
(Wszystkie ceny w USD)
- Czujnik przepływu - 3,87 USD
- Ekran LCD - 2,29 USD
- Arduino Nano – 1,59 zł
- Konwerter doładowania - 1,88 USD
- Ładowarka LiPo - $1,89
- Wodoodporny przełącznik - 0,93 USD (nie dokładnie taki, którego użyłem, ale powinien działać)
- Wodoodporny przycisk - 1,64 USD
- Dystanse, śruby i nakrętki M3 - 6,99 USD
- 2x żeńskie gniazdo 3,5 mm - 2,86 USD za sztukę.
- Wtyk męski 3,5 mm - 1,48 USD
- Zespół kabla 3,5 mm 3 ' - 3,57 USD
- Zespół kabla USB - 1,74 USD
- Złącze żeńskie-żeńskie 1/2" NPS - 1,88 USD
- Akumulator LiPo 500 mAh 3,7 V - 3,91 USD
Narzędzia i zwykłe materiały
- Lutownica i lutownica
- Drut
- Nożyce do drutu
- Narzędzia do ściągania izolacji
- Taśma dwustronna
- Śrubokręt krzyżakowy
- Drukarka 3D (opcjonalnie)
Krok 1: Hydroizolacja
Najtrudniejszym aspektem tego projektu jest zapewnienie wodoodporności całości. Ponieważ będzie przebywać pod prysznicem, musi być w stanie przetrwać ekstremalną wilgotność i okazjonalne zachlapanie. Około 75% całkowitego czasu spędzonego na tym projekcie było rozgryzanie tej części.
Moim zdaniem są dwie możliwości: zaprojektuj niestandardową obudowę wydrukowaną w 3D lub spróbuj sprawić, by działała z gotową obudową. Ponieważ niedawno dostałem własną drukarkę 3D, zdecydowałem się na pierwszą opcję.
Jeśli nie masz dostępu do drukarki 3D, oto kilka gotowych obudów, które według mnie są wodoodporne i prawdopodobnie będą działać. Pamiętaj, że nie kupiłem żadnej z tych obudów, więc nie gwarantuję, że wszystkie elementy zmieszczą się w środku!
Banggood - Pudełko 100x68x50mm z przezroczystą pokrywką - 5,35 $
Digikey - Pudełko 130x80x70mm z przezroczystą pokrywką - $11,65
Od tego momentu, kiedy odnoszę się do obudowy, mam na myśli moją wydrukowaną w 3D.
Krok 2: Moja niestandardowa obudowa z nadrukiem 3D
Po kilku godzinach pracy w Fusion 360 wymyśliłem tę obudowę. Posiada trzy okrągłe wycięcia pasujące do dwóch żeńskich gniazd 3,5 mm i jednego przełącznika. W pokrywie znajduje się 16mm otwór na chwilowy przycisk oraz prostokątne wycięcie na ekran, a także cztery otwory montażowe do mocowania ekranu. Wieczko jest oddzielną częścią i posiada wargę, która zapobiega przedostawaniu się wilgoci przez szew. Cztery otwory na rogach pudełka służą do przytrzymywania wieczka za pomocą 30mm dystansów. Wszystkie otwory na śruby mają średnicę 3 mm, co pasuje do śruby M3.
Możesz pobrać pliki STL z mojej strony Thingiverse. Można go drukować bez żadnych tratw ani podpór, ale użyłem podpór na wszelki wypadek. Użyłem również 100% wypełnienia. Ponieważ ściany są tak cienkie, zmniejszenie procentu wypełnienia tak naprawdę nie zmienia całkowitego czasu drukowania ani całkowitego materiału, więc po prostu utrzymywałem 100%.
Aby ekran był widoczny, może albo wystawać przez wycięcie w pokrywie obudowy, albo być umieszczony za przezroczystym okienkiem. Ponieważ ekran nie powinien być narażony na wilgoć, utknęliśmy z drugą opcją. Niestety drukowanie 3D z przezroczystym filamentem jest jeszcze w powijakach, więc będziemy musieli wykazać się nieco kreatywnością.
Moim rozwiązaniem było stworzenie prostokątnego wycięcia w pokrywce i przyklejenie kawałka przezroczystego plastiku z jakiegoś opakowania warzyw. Ta technika może być używana, nawet jeśli nie używasz mojej niestandardowej obudowy; po prostu wytnij prostokąt nożem uniwersalnym lub Dremelem. Oczywiście, jeśli używasz obudowy z przezroczystą pokrywą, nie jest to wcale potrzebne.
Najlepszym źródłem przezroczystego plastiku, jakie znalazłem, są opakowania produkcyjne. Zazwyczaj szpinak lub inne warzywa liściaste są dostarczane w dużych, przezroczystych plastikowych pojemnikach. W moim przypadku wykorzystałem opakowanie z „pieprzowej mieszanki”.
Chciałem, aby zwis 5 mm zapewniał dużą powierzchnię do klejenia, więc wyciąłem prostokąt o wymiarach 27 x 77 mm z przezroczystego plastiku. Musiałem trochę przyciąć rogi, żeby pasowały śruby. Wycisnąłem linię superkleju wokół obwodu wycięcia, a następnie umieściłem na nim przezroczysty plastik. Dodałem trochę więcej superglue wokół krawędzi, aby upewnić się, że jest uszczelniony.
Pro-Tip: Umieść część przed małym wentylatorem, gdy klej wysycha. Gdy superglue wysycha, ma tendencję do pozostawiania za sobą obrzydliwej białej pozostałości, której z pewnością nie chcemy na naszym przezroczystym oknie. Użyłem starego wentylatora 12V z zasilacza komputerowego. Pozostawiłem klej na 12 godzin, aby upewnić się, że jest całkowicie suchy.
Krok 3: Montaż ekranu LCD
Po wyschnięciu przezroczystego okienka można zamontować wyświetlacz LCD. Wyświetlacz LCD to bardzo popularny wyświetlacz 16x2 znaków, z „plecakiem” I²C wstępnie wlutowanym z tyłu. Gorąco polecam zakup tego ekranu z interfejsem I²C. Okablowanie wszystkich równoległych linii jest dość denerwujące i wprowadza więcej potencjalnych błędów - wersja I²C ma tylko dwa przewody zasilające i dwa przewody sygnałowe.
Do zamontowania ekranu użyłem czterech wsporników 10mm. Wsporniki mają na jednym końcu gwint męski, a na drugim gwint żeński. Przełożyłem gwint męski przez otwory w LCD i dokręciłem nakrętkę M3 do każdego z nich. Następnie użyłem czterech śrub M3, aby zabezpieczyć żeńskie końce wsporników przez pokrywę obudowy. Dostałem ten pakiet wsporników, który ma te 10 mm do zamontowania wyświetlacza LCD i dłuższe do przytrzymania pokrywy do podstawy. Dodatkowo są śruby i nakrętki M3, więc nie musisz kupować żadnego dodatkowego sprzętu.
Upewnij się, że nakrętki są bardzo mocno dokręcone, aby podczas dokręcania śrub występy się nie obracały. Upewnij się również, że nie dokręcasz zbyt mocno śrub, ponieważ plastikowa pokrywa może się odkształcić i nie uszczelnić prawidłowo.
Rząd 16 pinów nagłówka na wyświetlaczu LCD powinien znajdować się na górze - upewnij się, że nie montujesz wyświetlacza do góry nogami!
Krok 4: Montaż przycisku chwilowego
Postanowiłem użyć tego chorobliwie wyglądającego chromowanego przycisku na przednim panelu. Używałem ich w poprzednich projektach i bardzo podoba mi się ich wygląd. Mają być wodoodporne i wyposażone w gumowy pierścień zapobiegający przedostawaniu się wilgoci do obudowy przez gwinty.
Ten krok jest całkiem prosty. Odkręć nakrętkę, ale nie zdejmij gumowego pierścienia. Włóż guzik przez otwór w pokrywie i dokręć nakrętkę od tyłu. Unikaj nadmiernego dokręcania nakrętki, w przeciwnym razie gumowy pierścień zostanie zmiażdżony i nie będzie spełniał swojej funkcji.
Krok 5: Obwód zasilania i ładowania
Teraz połączymy elementy zasilania bateryjnego. Obejmuje to akumulator, wyłącznik główny, płytkę monitorowania/ładowania akumulatora oraz konwerter doładowania.
Bateria, której użyłem, to jednoogniwowa bateria litowo-jonowa 3,7 V 1500 mAh. Ten, którego użyłem, został wyciągnięty z zepsutego kontrolera Playstation. Każdy jednoogniwowy akumulator Li-Ion lub LiPo będzie działał, o ile zmieści się w Twojej obudowie. Ten typ baterii jest zwykle bardzo cienki i płaski, więc prawdopodobnie bez problemu mógłbyś użyć dwa razy większej od mojej. Ogniwo 18650 zadziała, ale nie zmieści się w mojej niestandardowej obudowie, więc musisz zaprojektować własną lub użyć gotowej obudowy. Jeśli to możliwe, polecam używać baterii ocalonych (tak jak ja), ponieważ wysyłka baterii jest często droga!
Akumulator należy najpierw przylutować do płytki ładującej TP4056. Jeśli chcesz, możesz dla wygody przylutować złącze JST RCY do akumulatora i ładowarki (ja to zrobiłem), ale nie jest to konieczne. Upewnij się, że przestrzegasz prawidłowej biegunowości, zgodnie z oznaczeniami na płytce ładowarki, ponieważ płytka nie jest zabezpieczona przed odwrotną polaryzacją akumulatora!
Następnie przylutuj przewód z dodatniego wyjścia ładowarki (znajdującego się obok dodatniego przewodu akumulatora) do dodatniego wejścia konwertera doładowania. Następnie przylutuj przewód z ujemnego wyjścia (znajdującego się obok ujemnego przewodu akumulatora) do wspólnego (środkowego) styku głównego przełącznika. Na koniec przylutuj przewód z normalnie otwartego styku przełącznika do ujemnego wejścia konwertera doładowania. Jeśli podłączysz multimetr do wyjścia konwertera doładowania i włączysz wyłącznik główny, powinno zostać wyświetlone napięcie.
Ponieważ nasze Arduino, ekran LCD i czujnik przepływu wymagają 5 V, musimy ustawić wyjście konwertera doładowania na 5 V. Osiąga się to poprzez przekręcenie pokrętła na potencjometrze małym śrubokrętem. Przy włączonym wyłączniku głównym, podłączonym akumulatorze i multimetrze podłączonym do wyjścia konwertera doładowania, powoli obracaj potencjometr, aż na wyjściu pojawi się 5V. Trudno będzie uzyskać odczyt dokładnie 5000 V, ale dążyć do napięcia między 4,9 V a 5,1 V.
Ponieważ moja niestandardowa obudowa jest zamknięta kilkoma śrubami, nie chcemy otwierać obudowy za każdym razem, gdy trzeba ją naładować. Użyłem do tego gniazda słuchawkowego 3,5 mm. Dokładne złącze, którego użyłem, to to z Digikey (do którego są dopasowane wycięcia w mojej obudowie), ale to z Banggood również powinno działać.
Najpierw włożyłem złącze do najniższego otworu w obudowie. Ponieważ będzie on przez większość czasu odłączony, a zatem podatny na wnikanie wilgoci, najlepiej jest zamontować go na dnie, aby zapobiec kapaniu wody do środka. Po zamontowaniu podkładki zabezpieczającej i dokręceniu nakrętki przylutowałem dwa przewody do zakładek „końcówka” i „tuleja” na złączu. Pinout złącza jest pokazany na jednym z moich obrazów z adnotacjami. Drugi koniec przewodu „rękawowego” przylutowałem do ujemnego wejścia na ładowarce, obok portu micro USB. Na koniec przylutowałem przewód "końcówki" do podkładki +5V, po drugiej stronie portu USB. Port USB na ładowarce nie będzie używany, ponieważ trudno byłoby sprawić, aby port USB przeniknął przez obudowę bez wpuszczania wilgoci.
Krok 6: Kabel do ładowania
Ponieważ używamy gniazda audio 3,5 mm jako portu ładowania, musimy wykonać kabel przejściowy z męską wtyczką 3,5 mm na jednym końcu i wtyczką USB A na drugim końcu. Umożliwi nam to użycie dowolnej ogólnej ładowarki do urządzeń mobilnych (takiej jak ładowarka do iPhone'a) do ładowania tego urządzenia.
Możesz kupić zestaw kabli USB ze złączem USB A na jednym końcu i cynowanymi przewodami na drugim końcu, ale jeśli jesteś podobny do mnie, prawdopodobnie masz tuzin losowych kabli USB, których nie potrzebujesz. Zamiast kupować zestaw kabla USB, po prostu dostałem kabel micro USB do USB A, którego nie potrzebowałem, i odciąłem złącze micro USB.
Następnie zdjąłem białą kurtkę z kabla, odsłaniając tylko dwa przewody w środku: czerwony i czarny. Niektóre kable USB mają cztery przewody: czerwony, czarny, zielony i biały. Zielony i biały służą do przesyłania danych i można je zignorować. Zdejmij izolację tylko z czerwonego i czarnego przewodu.
Następnie będziesz potrzebować męskiej wtyczki 3,5 mm. Użyłem tego z Banggood. Przylutuj czerwony przewód od kabla USB do środkowej zakładki (która jest końcówką złącza) i czarny przewód do zakładki z długim rękawem. Zobacz moje zdjęcia dla wyjaśnienia.
Zalecam zawsze podłączanie wtyczki 3,5 mm przed wtyczką USB, ponieważ proces podłączania kabla może spowodować zwarcie wtyczki w metalowym gnieździe.
Krok 7: Informacje o czujniku przepływu
Kupiłem ten czujnik przepływu z Banggood za 3,87 USD. Przed użyciem postanowiłem zbadać, jak to działa.
Projekt jest zaskakująco prosty i pomysłowy. Elektronika jest całkowicie odizolowana od wody. Jest swobodnie obracające się śmigło, które obraca się wolniej lub szybciej w zależności od natężenia przepływu. W pewnym momencie na śmigle znajduje się magnes. Na zewnątrz czujnika znajduje się niewielka komora, w której znajduje się niewielka płytka drukowana z dwoma elementami: rezystorem i czujnikiem z efektem Halla. Za każdym razem, gdy magnes przechodzi obok czujnika efektu Halla, przełącza się między wysokim a niskim. Innymi słowy, przełącza się między 5 V a 0 V za każdym razem, gdy śmigło się obraca.
Aby odczytać czujnik, podłączamy +5V do przewodu czerwonego, minus do przewodu czarnego i odczytujemy sygnał cyfrowy z przewodu żółtego. Na zdjęciu mojego oscyloskopu widać jak zmienia się sygnał po włączeniu przepływu. Na początku sygnał ma stale zero woltów. Kiedy przepływ zaczyna się, częstotliwość impulsów szybko wzrasta i osiąga stan ustalony.
Zgodnie z arkuszem danych czujnik wysyła 450 impulsów na litr. Będzie to ważne później, gdy będziemy pisać oprogramowanie.
Krok 8: Okablowanie czujnika przepływu
Czujnik przepływu jest dostarczany z 3-pinowym złączem JST-XH. Nie jest to idealne rozwiązanie, ponieważ przewody są za krótkie, a złącze ma odsłonięte styki, które łatwo mogą zostać zwarte przez zabłąkane krople wody. Zamówiłem ten zestaw kabla z wtyczką audio 3,5 mm w firmie Digikey. Ma długość 3', co jest idealną długością, i ma ocynowane druty, co ułatwia lutowanie. Nie polecam używania starego kabla słuchawkowego, ponieważ mają one zwykle bardzo cienki emaliowany drut, który jest prawie niemożliwy do przylutowania.
Przetwornik przepływu ma plastikową osłonę, przytrzymywaną dwiema śrubami Phillips. Po prostu odkręć te śruby i wyciągnij płytkę drukowaną. Nie jest utrzymywany żadnym klejem, jest po prostu utrzymywany na miejscu plastikową pokrywką. Następnie wylutuj trzy przewody, podgrzewając je lutownicą i zdejmując pojedynczo.
Następnie przylutuj kabel audio 3,5 mm do padów. Proponuję dopasować kolory tak jak ja. Ta konfiguracja ma +5V na końcówce, sygnał na pierścieniu i uziemienie na tulei. Jest to ta sama konfiguracja, która została użyta dla portu ładowania, od kroku 6. Jeśli przypadkowo podłączysz ładowarkę do portu czujnika lub odwrotnie, urządzenie nie zostanie uszkodzone.
Krok 9: Instalacja czujnika przepływu
Do tego momentu cała nasza praca odbywała się w warsztacie. Ale teraz nadszedł czas, aby udać się do łazienki!
Najpierw zdjąłem głowicę prysznicową. Ujawniło to krótki kawałek rury wystający ze ściany, z gwintem męskim 1/2 NPS. Dogodnie, nasz czujnik przepływu ma dokładnie ten sam rozmiar gwintu! Jedynym problemem jest to, że czujnik ma gwint męski na obu końcach, więc będziemy potrzebujesz sprzężenia żeńsko-żeńskiego.
W moim lokalnym sklepie z narzędziami były złączki 1/2 z mosiądzu, żelaza i PCV. Ta z PCV była najtańsza, więc ją kupiłem. Chociaż z perspektywy czasu te mosiężne lub stalowe wyglądałyby ładniej.
Gdy już masz złączkę, po prostu wkręć czujnik przepływu w złączkę, a następnie przykręć drugi koniec złączki do rury. Czujnik przepływu ma strzałkę wskazującą zamierzony kierunek przepływu. Upewnij się, że nie instalujesz go odwrotnie, ponieważ pomiary mogą być niedokładne. Na koniec przykręć głowicę prysznica do końca czujnika przepływu.
Oczywiście zakładam, że twój prysznic używa gwintu 1/2 NPS, tak jak mój. Jeśli tak nie jest, będziesz musiał zaopatrzyć się w dodatkowe adaptery.
Pro-Tip: Dodaj trochę teflonowej taśmy hydraulicznej do wszystkich gwintów przed skręceniem elementów, aby zapobiec wyciekom. Nie miałem żadnych pod ręką, ale planuję dodać to w najbliższej przyszłości.
Krok 10: Arduino i płyta perforowana
Ponieważ będziemy musieli wykonać dużo okablowania, dobrym pomysłem jest zaopatrzenie się w kawałek płyty perforowanej, aby trochę uporządkować. Wyciąłem prostokąt z płyty perforowanej około 1" na 2". Następnie umieściłem Arduino Nano na środku płytki i zaznaczyłem, przez które przeszły piny nagłówka. Następnie wyciąłem dwie odcinki żeńskich nagłówków, każda o długości 15 pinów. Przylutowałem je do płyty perforowanej, gdzie wcześniej zaznaczyłem. To pozwoli nam usunąć Arduino do programowania.
Pro-Tip: Zaznacz orientację portu USB Arduino, aby zawsze podłączać go do płyty perforowanej w ten sam sposób.
Krok 11: Okablowanie wszystkiego
Teraz czas na zlutowanie wszystkiego razem! Dołączyłem kompletny schemat okablowania, który możesz śledzić, lub zobaczyć moje pisemne kroki poniżej, jeśli wolisz bardziej ukierunkowane podejście.
Najpierw wyciąłem kilka męskich pinów nagłówka i przylutowałem je do płyty perforowanej na szynach +5V i uziemienia. Następnie przylutowałem jeszcze dwa piny nagłówka podłączone do pinów A4 i A5 na Arduino. Te nagłówki pozwolą nam połączyć ekran LCD za pomocą zworek żeńskich.
Następnie przylutowałem parę przewodów z wyjścia konwertera doładowania do szyn +5V i uziemienia. Zapewni to zasilanie Arduino, wyświetlacza LCD i czujnika przepływu.
Następnie przeciąłem dwa przewody i podłączyłem je do zacisków przycisku. Przylutowałem jeden przewód do szyny uziemiającej, a drugi do pinu cyfrowego 3.
Ostatnią częścią do lutowania jest czujnik przepływu. Ponieważ do czujnika dołączyliśmy już wtyczkę 3,5 mm, wystarczy przylutować żeńskie gniazdo 3,5 mm. Najpierw przylutowałem trzy przewody - po jednym do każdej z wypustek na gnieździe. Następnie włożyłem podnośnik przez obudowę i zabezpieczyłem go nakrętką. Na koniec przylutowałem tuleję do masy, końcówkę do +5V, a pierścień do pinu cyfrowego 2.
Wybrałem cyfrowe piny 2 i 3 dla przycisku i czujnika przepływu, ponieważ są to piny przerwań sprzętowych. To znacznie ułatwi pisanie kodu.
Teraz zakończyliśmy lutowanie, ale musimy jeszcze podłączyć LCD. Ponieważ przylutowaliśmy nagłówki, potrzebujemy tylko czterech zworek żeńskich. Podłącz pin "Vcc" do +5V, pin "Gnd" do masy, pin "SCL" do A5, a pin "SDA" do A4. Aby ekran LCD zmieścił się w obudowie, musimy wygiąć kołki głowicy do tyłu. Kilkukrotne zginanie szpilek w tę i z powrotem spowoduje zmęczenie metalu i złamanie szpilek, dlatego zalecam zginanie ich tylko raz i należy to robić ostrożnie.
Teraz okablowanie jest gotowe!
Krok 12: Programowanie
Teraz, gdy sprzęt jest już podłączony, możemy zaprogramować Arduino.
Chcę, aby program posiadał następujące funkcje:
- W pierwszym wierszu wyświetl szybko aktualizującą się liczbę wszystkich litrów
- W drugim wierszu wyświetl całkowity koszt wody lub natężenie przepływu
- Gdy prysznic jest uruchomiony, przycisk przełącza się między pokazywaniem kosztu lub natężenia przepływu
- Gdy prysznic nie działa, przycisk powinien wyczyścić wszystkie dane i zresetować ekran
- Czujnik powinien być odczytywany za pomocą procedury przerwania, aby uniknąć grubych metod odpytywania
- Aktualizując ekran, powinniśmy aktualizować tylko te wartości, które uległy zmianie, zamiast nadpisywać cały ekran za każdym razem (powodowałoby to zauważalne migotanie)
Program ma prostą strukturę. Używając funkcji millis(), możemy tworzyć opóźnienia, które w rzeczywistości nie zatrzymują wykonywania programu. Zobacz ten samouczek, aby zobaczyć przykład migania diody LED bez użycia funkcji delay().
Funkcja millis() zwraca liczbę milisekund od włączenia Arduino. Tworząc zmienną " previousMillis " i odejmując Millis() - previousMillis(), możemy zobaczyć czas, jaki upłynął od aktualizacji previousMillis.
Jeśli chcemy, aby coś się działo raz na sekundę, możemy użyć następującego bloku kodu:
if((millis() - poprzedniMillis) >= 1000){
poprzedniMillis = mili(); przełączLED(); }
Sprawdza, czy różnica między millis() (bieżący czas) a poprzednim Millis (ostatni czas) jest większa lub równa 1000 milisekund. Jeśli tak, pierwszą rzeczą, którą robimy, jest ustawienie wartości previousMillis na obecną godzinę. Następnie wykonujemy dodatkowe kroki, które chcemy. W tym przykładzie przełączamy diodę LED. Następnie wychodzimy z tego bloku kodu i kończymy resztę funkcji loop(), po czym wracamy do początku i powtarzamy to od nowa.
Zaletą użycia tej metody w porównaniu z prostą funkcją delay() jest to, że delay() umieszcza przerwę czasową między instrukcjami, ale nie uwzględnia czasu potrzebnego na wykonanie innych instrukcji w funkcji loop(). Jeśli robisz coś, co trwa dłużej niż samo miganie diody LED, na przykład aktualizujesz ekran LCD, czas, który to zajmuje, nie jest bez znaczenia, a po kilku cyklach będzie się sumował. Jeśli aktualizujesz ekran LCD na zegarze, szybko stanie się on niedokładny i pozostanie w tyle.
Teraz, gdy rozumiemy już ogólną strukturę programu, nadszedł czas na wprowadzenie instrukcji. Zamiast wyjaśniać tutaj każdy wiersz kodu, proponuję najpierw przeczytać załączony schemat blokowy, który daje ogólny przegląd tego, co robi program.
Gdy zobaczysz schemat blokowy, spójrz na załączony kod Arduino. Skomentowałem prawie każdą linijkę, aby było jasne, co robi każda linia.
Jest kilka części kodu, które możesz chcieć zmienić. Najważniejszy jest koszt za litr. W moim mieście woda kosztuje 0,2523¢ za litr. Znajdź następujący wiersz i zmień tę wartość, aby odpowiadała kosztom w Twoim miejscu zamieszkania:
const float COST_PER_LITRE = 0,2523; // koszt za litr, w centach, ze strony miasta
Jeśli wolisz używać galonów zamiast litrów, zmień wszystkie wiersze „LCD.print()”, które odnoszą się do „L” lub „L/s” na „G” lub „G/s”. Następnie usuń następujący wiersz:
const float KONWERSJA = 450,0; // zachowaj to bez komentarza przez litry
…i odkomentuj tę linijkę:
const float KONWERSJA = 1703,0; // odkomentuj to i usuń powyższą linię dla galonów
Jest jeszcze jedna dziwność, którą mogłeś zauważyć w moim kodzie. Domyślny zestaw znaków nie zawiera znaku „¢” i nie chciałem używać dolarów, ponieważ przez większość czasu koszt byłby wyświetlany jako „0,01 USD” lub mniej. Dlatego zostałem zmuszony do stworzenia niestandardowej postaci. Do reprezentowania tego symbolu używana jest następująca tablica bajtów:
bajt cent_sign = { B00100, B00100, B01111, B10100, B10100, B01111, B00100, B00100 };
Po utworzeniu tej tablicy znak specjalny musi zostać „stworzony” i zapisany.
lcd.createChar(0, znak_centa);
Po wykonaniu tej czynności, aby wydrukować niestandardowy znak, używamy następującego wiersza:
lcd.write(bajt(0)); // drukuj znak centów (¢)
Wyświetlacz LCD może mieć do 8 niestandardowych znaków. Więcej informacji na ten temat znajdziesz tutaj. Natknąłem się również na to pomocne narzędzie online, które pozwala narysować niestandardowy znak za pomocą interfejsu graficznego i automatycznie wygeneruje niestandardową tablicę bajtów.
Krok 13: Zamykanie pokrywy
Wreszcie prawie skończyliśmy!
Czas włożyć całą elektronikę do obudowy i mieć nadzieję, że pokrywa się zamknie. Ale najpierw musimy przymocować dystanse 30mm. Pakiet patowych, które kupiłem, nie zawiera tak długich, ale jest wyposażony w 20mm i 10mm, które można połączyć. W otworach w dolnej części obudowy przykręciłem cztery kołki za pomocą czterech śrub M3 (patrz zdjęcia 1 i 2). Pamiętaj, aby mocno je dokręcić, ale nie za mocno, ponieważ grozi to uszkodzeniem plastikowej obudowy.
Teraz możemy zmieścić całą elektronikę w środku. Do pokrywy przymocowałem ładowarkę i konwerter doładowania taśmą dwustronną, jak widać na trzecim obrazku. Następnie owinąłem taśmę elektryczną wokół odsłoniętego metalu na dwóch gniazdach 3,5 mm, aby upewnić się, że nic nie zostanie zwarte przez kontakt ze złączami.
Udało mi się dopasować Arduino, umieszczając go na boku, w lewym dolnym rogu, z portem USB skierowanym w prawo. Użyłem więcej taśmy dwustronnej, aby przymocować baterię do dolnej części obudowy pod ekranem LCD.
Wreszcie, gdy wszystko zostanie mniej lub bardziej bezpiecznie zakleszczone w pudełku, pokrywę można przykręcić czterema kolejnymi śrubami M3.
Krok 14: Testowanie
Najpierw podłącz złącze 3,5 mm od czujnika przepływu. Polecam zrobić to przed włączeniem urządzenia, ponieważ możliwe jest, że wtyczka zrobi niepożądane połączenie podczas wkładania.
Następnie włącz główny wyłącznik zasilania. Chociaż nie płynie woda, przycisk na panelu przednim nie powinien nic robić poza wyczyszczeniem sumy i wyczyszczeniem ekranu. Ponieważ suma będzie domyślnie równa zero, przycisk nie wydaje się jeszcze nic robić.
Jeśli włączysz prysznic, suma powinna zacząć rosnąć. Domyślnie wyświetlany jest koszt. Jeśli naciśniesz przycisk na panelu przednim, prędkość przepływu zostanie wyświetlona w dolnym wierszu. Naciśnięcie przycisku na panelu przednim spowoduje przełączanie między pokazywaniem natężenia przepływu a pokazywaniem kosztów, o ile prysznic jest włączony. Gdy prysznic się zatrzyma, naciśnięcie przycisku na panelu przednim zresetuje pomiary i wyczyści ekran.
Montowanie
Sposób montażu urządzenia zależy od układu prysznica. Niektóre prysznice mogą mieć półkę wystarczająco blisko głowicy prysznicowej, aby można było tam po prostu umieścić urządzenie. Pod prysznicem mam przymocowany koszyk z przyssawkami, w którym umieściłem urządzenie. Jeśli nie masz luksusu półki lub kosza, możesz spróbować przymocować urządzenie do ściany za pomocą dwustronnej przyssawki. To zadziała tylko wtedy, gdy używasz gotowej obudowy z gładkim podkładem lub wydrukowałeś moją niestandardową obudowę na drukarce ze szklaną płytą roboczą. Jeśli twoja obudowa ma szorstkie podłoże (tak jak moja), możesz spróbować użyć taśmy dwustronnej, chociaż może to pozostawić pozostałości na ścianie prysznica, jeśli spróbujesz usunąć urządzenie.
Rozwiązywanie problemów
Ekran jest włączony, ale podświetlenie wyłączone - upewnij się, że zworka jest założona na dwa piny z boku modułu I²C
Ekran jest pusty, z włączonym podświetleniem - sprawdź, czy adres I²C jest poprawny, uruchamiając skaner I²C
Ekran jest włączony, ale wartości pozostają zerowe - sprawdź, czy z czujnika dochodzi sygnał, mierząc napięcie na pinie 2. Jeśli nie ma sygnału, sprawdź, czy czujnik jest prawidłowo podłączony.
Ekran jest pusty z wyłączonym podświetleniem - sprawdź, czy dioda LED zasilania na Arduino jest włączona i sprawdź, czy ekran ma zasilanie
Ekran włącza się na chwilę, potem wszystko się zatrzymuje - prawdopodobnie ustawiłeś zbyt wysokie napięcie z przetwornicy doładowania (podzespoły nie radzą sobie z więcej niż 5V)
Urządzenie działa, ale wartości są nieprawidłowe - upewnij się, że czujnik przepływu, którego używasz, ma taki sam współczynnik konwersji 450 impulsów na litr. Różne czujniki mogą mieć różne wartości.
Krok 15: Teraz zacznij oszczędzać wodę
Ulepszenia
Obecna wersja oprogramowania działa wystarczająco dobrze, ale ostatecznie chciałbym dodać możliwość posiadania różnych użytkowników (członków rodziny, współlokatorów itp.). Urządzenie będzie przechowywać statystyki każdej osoby (całkowita woda i całkowita liczba pryszniców) do wyświetlać średnie zużycie wody dla każdej osoby. Może to zachęcić ludzi do rywalizacji o zużycie jak najmniejszej ilości wody.
Byłoby też fajnie mieć sposób na wyeksportowanie danych do przeglądania w arkuszu kalkulacyjnym, aby można je było przedstawić na wykresach. Wtedy można było zobaczyć, w jakich porach roku ludzie mają częstsze i dłuższe prysznice.
Wszystkie te funkcje wymagałyby użycia pamięci EEPROM - wbudowanej pamięci nieulotnej Arduino. Pozwoliłoby to zachować dane nawet po wyłączeniu urządzenia.
Inną przydatną funkcją byłby wskaźnik baterii. W tej chwili jedyną wskazówką, że urządzenie wymaga doładowania, jest odcięcie zasilania przez płytkę menedżera baterii. Łatwo byłoby podłączyć dodatkowe wejście analogowe do pomiaru napięcia akumulatora. Dzielnik napięcia nie byłby nawet potrzebny, ponieważ napięcie baterii jest zawsze mniejsze niż 5V.
Niektóre z tych pomysłów są na granicy funkcjonalności, dlatego nie rozwijałem dalej oprogramowania.
Reszta zależy od Ciebie!
I nagroda w Konkursie Czujników
Zalecana:
Stwórz własny podłączony termostat grzewczy i oszczędzaj dzięki ogrzewaniu: 53 kroki (ze zdjęciami)
Stwórz swój własny podłączony termostat grzewczy i oszczędzaj dzięki ogrzewaniu: Jaki jest cel? Zwiększ komfort, ogrzewając dom dokładnie tak, jak chcesz Oszczędzaj i zmniejsz emisję gazów cieplarnianych, ogrzewając dom tylko wtedy, gdy tego potrzebujesz Zachowaj kontrolę nad ogrzewaniem, gdziekolwiek jesteś Bądź dumny, że to zrobiłeś
Pojemnik na papier: oszczędzaj papier toaletowy dzięki terapii szokowej: 4 kroki
Ochrona papieru: oszczędzaj papier toaletowy dzięki terapii szokowej: Wszyscy widzieliśmy puste półki w sklepie spożywczym i wygląda na to, że przez jakiś czas będzie brakować papieru toaletowego. Jeśli nie zaopatrzyłeś się wcześnie, prawdopodobnie jesteś w sytuacji, w której się znajduję. Mam domek na 6 i tylko kilka rolek do końca
Ratuj swoje życie dzięki monitorowi zawalania budynku: 8 kroków
Ratuj swoje życie dzięki monitorowi zawalania się budynku: analizuj konstrukcje betonowe, metalowe, drewniane pod kątem zgięć i kątów oraz alertów, jeśli odbiegały one od pierwotnej pozycji
Maszyna do trawienia PCB. Oszczędzaj pieniądze i czas .: 8 kroków
Maszyna do trawienia PCB. Oszczędzaj pieniądze i czas….: Jak widać na zdjęciu. To jest moja maszyna do trawienia DIY. Skonstruowałem tę maszynę do trawienia prawie 10 lat temu (1998) … Następnym krokiem jest szczegół konstrukcyjny ….. Ciesz się
Wodoodporny głośnik dla lepszego śpiewania pod prysznicem: 12 kroków (ze zdjęciami)
Wodoodporny głośnik dla lepszego śpiewania pod prysznicem: Jeśli jesteś taki jak ja – a wiem, że jesteś – UWIELBIASZ śpiewać pod prysznicem i OBCIĄŻ SIĘ! Nic nie mogę zrobić z okropnym śpiewem, ale to, co naprawdę mnie denerwuje i prawdopodobnie wszystkich innych w zasięgu mojego głosu