Оглавление:

Экономьте воду и деньги с помощью монитора уровня воды в душе: 15 шагов (с изображениями)
Экономьте воду и деньги с помощью монитора уровня воды в душе: 15 шагов (с изображениями)

Видео: Экономьте воду и деньги с помощью монитора уровня воды в душе: 15 шагов (с изображениями)

Видео: Экономьте воду и деньги с помощью монитора уровня воды в душе: 15 шагов (с изображениями)
Видео: [МК] Бизнес в маленьком городе во время карантина: от разорения до успеха 2024, Ноябрь
Anonim
Экономьте воду и деньги с помощью монитора уровня воды в душе
Экономьте воду и деньги с помощью монитора уровня воды в душе
Экономьте воду и деньги с помощью монитора уровня воды в душе
Экономьте воду и деньги с помощью монитора уровня воды в душе
Экономьте воду и деньги с помощью монитора уровня воды в душе
Экономьте воду и деньги с помощью монитора уровня воды в душе
Экономьте воду и деньги с помощью монитора уровня воды в душе
Экономьте воду и деньги с помощью монитора уровня воды в душе

Что использует больше воды - ванна или душ?

Недавно я размышлял над этим вопросом и понял, что на самом деле не знаю, сколько воды используется, когда я принимаю душ. Я знаю, что, когда я принимаю душ, иногда мои мысли блуждают, думая о новой крутой идее или пытаясь решить, что съесть на завтрак, в то время как вода просто льется в канализацию. Было бы намного проще сократить потребление воды, если бы я действительно знал, сколько литров я использую каждый раз!

Я провел небольшое исследование и обнаружил, что разные насадки для душа могут использовать от 9,5 литров (2,5 галлона) в минуту до менее 6 литров (1,6 галлона) в минуту, если у вас установлен ограничитель потока. В очень старом душе можно было использовать еще больше воды.

Я решил спроектировать и построить устройство, которое будет отображать общий объем воды, используемой для душа, стоимость воды и скорость потока. Я установил это устройство в течение нескольких недель, и очень удобно иметь в реальном времени считывание количества используемой воды.

В этом руководстве я объясню, как я это построил. Конечно, вам не обязательно в точности следовать моим шагам! Всегда полезно использовать части, которые у вас есть. Я включил ссылки на все части, которые я использовал, или на эквивалентную часть, которая будет работать.

Запасы

(Все цены в долларах США)

  • Датчик расхода - 3,87 доллара США.
  • ЖК-экран - 2,29 доллара
  • Arduino Nano - 1,59 доллара
  • Повышающий преобразователь - 1,88 доллара США.
  • Зарядное устройство LiPo - 1,89 доллара
  • Водонепроницаемый тумблер - 0,93 доллара (не тот, который я использовал, но он должен работать)
  • Водонепроницаемая кнопка - 1,64 доллара США.
  • Стойки, винты и гайки M3 - 6,99 долларов США.
  • 2X Female 3.5mm Jack - 2,86 доллара за шт.
  • Штекер 3,5 мм - 1,48 $
  • Кабель 3,5 мм 3 '- 3,57 доллара США
  • Кабель USB в сборе - 1,74 доллара
  • Муфта с внутренней резьбой 1/2 "NPS - 1,88 доллара США.
  • Литий-полимерная батарея емкостью 500 мАч, 3,7 В - 3,91 доллара США.

Инструменты и общие принадлежности

  • Паяльник и припой
  • Проволока
  • Кусачки
  • Инструмент для зачистки проводов
  • Двухсторонний скотч
  • Отвертка Филлипс
  • 3D-принтер (опционально)

Шаг 1: Гидроизоляция

Гидроизоляция
Гидроизоляция

Самый сложный аспект этого проекта - сделать все водонепроницаемым. Поскольку он будет находиться в душе, он должен выдерживать экстремальную влажность и случайные брызги. Около 75% всего времени, потраченного на этот проект, приходилось на выяснение этой части.

На мой взгляд, есть два варианта: спроектировать корпус, напечатанный на 3D-принтере, или попытаться заставить его работать со стандартным корпусом. Поскольку у меня недавно появился собственный 3D-принтер, я решил выбрать первый вариант.

Если у вас нет доступа к 3D-принтеру, вот несколько готовых корпусов, которые, как я обнаружил, утверждают, что они водонепроницаемы и, вероятно, сработают. Обратите внимание, что я не покупал ни один из этих корпусов, поэтому я не даю никаких гарантий, что все компоненты поместятся внутри!

Banggood - коробка 100x68x50 мм с прозрачной крышкой - 5,35 доллара

Digikey - коробка 130x80x70 мм с прозрачной крышкой - $ 11,65

В дальнейшем, когда я говорю о корпусе, я говорю о моем 3D-печатном корпусе.

Шаг 2: Мой корпус, напечатанный на 3D-принтере

Мой корпус, напечатанный на 3D-принтере!
Мой корпус, напечатанный на 3D-принтере!
Мой индивидуальный корпус, напечатанный на 3D-принтере!
Мой индивидуальный корпус, напечатанный на 3D-принтере!
Мой корпус, напечатанный на 3D-принтере!
Мой корпус, напечатанный на 3D-принтере!

Проработав несколько часов в Fusion 360, я придумал этот корпус. Он имеет три круглых выреза для двух гнезд 3,5 мм и одного тумблера. В крышке есть отверстие 16 мм для кнопки мгновенного действия и прямоугольный вырез для экрана, а также четыре монтажных отверстия для удержания экрана на месте. Крышка представляет собой отдельную часть и имеет выступ для предотвращения попадания влаги через шов. Четыре отверстия по углам коробки предназначены для удержания крышки с 30-миллиметровыми стойками. Все отверстия под винты имеют диаметр 3 мм, что подходит для винта M3.

Вы можете скачать файлы STL со страницы моей Thingiverse. Его можно напечатать без каких-либо плотов или опор, но я использовал опоры на всякий случай. Я также использовал 100% заполнение. Поскольку стенки такие тонкие, уменьшение процента заполнения на самом деле не влияет на общее время печати или общий материал, поэтому я просто оставил его на 100%.

Чтобы экран был виден, он мог либо выступать через вырез в крышке корпуса, либо быть помещен за прозрачное окно. Поскольку экран не должен подвергаться воздействию влаги, мы остановились на втором варианте. К сожалению, 3D-печать прозрачной нитью все еще находится в зачаточном состоянии, поэтому нам придется проявить немного творчества.

Мое решение заключалось в том, чтобы сделать прямоугольный вырез в крышке и приклеить кусок прозрачного пластика от упаковки для овощей. Эту технику можно использовать, даже если вы не пользуетесь моим индивидуальным корпусом; просто вырежьте прямоугольник с помощью канцелярского ножа или дремеля. Конечно, если вы используете корпус с прозрачной крышкой, в этом нет необходимости.

Лучший источник прозрачного пластика, который я нашел, - это производственная упаковка. Обычно шпинат или другие листовые овощи продаются в больших прозрачных пластиковых контейнерах. В моем случае я использовала упаковку от «Перечного месива».

Я хотел, чтобы выступ 5 мм давал большую площадь для приклеивания, поэтому я вырезал прямоугольник 27x77 мм из прозрачного пластика. Пришлось немного подрезать углы, чтобы подошли шурупы. Я нанесла полоску суперклея по периметру выреза, а затем наложила на нее прозрачный пластик. Я добавил немного больше суперклея по краю, чтобы убедиться, что он плотно прилегает.

Совет: поместите деталь перед небольшим веером, пока клей сохнет. По мере высыхания суперклея он оставляет после себя мерзкий белый осадок, которого мы, конечно, не хотим на нашем прозрачном окне. Я использовал старый вентилятор на 12В от компьютерного блока питания. Я оставил клей на 12 часов, чтобы он полностью высох.

Шаг 3: Установка ЖК-экрана

Монтаж ЖК-экрана
Монтаж ЖК-экрана
Монтаж ЖК-экрана
Монтаж ЖК-экрана
Монтаж ЖК-экрана
Монтаж ЖК-экрана

После высыхания прозрачного окна можно устанавливать ЖК-дисплей. LCD - это суперпопулярный символьный дисплей 16x2 с припаянным к задней части «рюкзаком» I²C. Я настоятельно рекомендую получить этот экран с интерфейсом I²C. Подключение всех параллельных линий довольно утомительно и увеличивает вероятность ошибок - версия I²C имеет только два провода для питания и два провода для сигнала.

Для крепления экрана я использовал четыре 10-миллиметровых стойки. Каждая стойка имеет внешнюю резьбу на одном конце и внутреннюю резьбу на другом. Я продел внешнюю резьбу через отверстия в ЖК-дисплее и затянул гайку M3 на каждое из них. Затем я использовал четыре винта M3, чтобы закрепить охватывающие концы стоек через крышку корпуса. Я получил этот пакет стоек, в котором есть 10 мм для крепления ЖК-дисплея и более длинные для крепления крышки к основанию. Кроме того, есть винты и гайки M3, поэтому вам не нужно покупать дополнительное оборудование.

Убедитесь, что гайки затянуты очень сильно, чтобы при затяжке винтов стойки не поворачивались. Также убедитесь, что вы не затягиваете винты слишком сильно, иначе пластиковая крышка может деформироваться и не плотно прилегать.

Ряд из 16 выводов заголовка на ЖК-дисплее должен быть сверху - убедитесь, что вы не устанавливаете ЖК-дисплей вверх ногами!

Шаг 4: Установка кнопки мгновенного действия

Установка кнопки мгновенного действия
Установка кнопки мгновенного действия
Установка кнопки мгновенного действия
Установка кнопки мгновенного действия
Установка кнопки мгновенного действия
Установка кнопки мгновенного действия

Я решил использовать эту хромовую кнопку на передней панели. Я использовал их в предыдущих проектах, и мне очень нравится, как они выглядят. Они должны быть водонепроницаемыми и поставляются с резиновым кольцом для предотвращения попадания влаги в корпус через резьбу.

Этот шаг довольно прост. Отверните гайку, но оставьте резиновое кольцо на месте. Вставьте пуговицу в отверстие в крышке и затяните гайку с обратной стороны. Избегайте чрезмерного затягивания гайки, иначе резиновое кольцо будет раздавлено и не будет служить своей цели.

Шаг 5: Схема питания и зарядки

Схема питания и зарядки
Схема питания и зарядки
Схема питания и зарядки
Схема питания и зарядки
Схема питания и зарядки
Схема питания и зарядки

Теперь соберем элементы питания от аккумулятора. Сюда входят аккумулятор, главный выключатель, плата контроля / зарядки аккумулятора и повышающий преобразователь.

Я использовал одноэлементный литий-ионный аккумулятор 3,7 В емкостью 1500 мАч. Тот, который я использовал, был извлечен из сломанного контроллера Playstation. Любой одноэлементный литий-ионный или литий-полимерный аккумулятор будет работать, если он помещается в ваш корпус. Батарея этого типа обычно очень тонкая и плоская, поэтому вы, вероятно, без проблем сможете использовать батарею в два раза больше моей. Ячейка 18650 подойдет, но она не поместится в моем нестандартном корпусе, поэтому вам нужно будет разработать свой собственный или использовать готовый корпус. Если возможно, я рекомендую использовать утилизированный аккумулятор (как и я), потому что доставка аккумуляторов часто обходится дорого!

Аккумулятор сначала следует припаять к зарядной плате TP4056. При желании можно для удобства припаять разъем JST RCY к аккумулятору и зарядному устройству (я так и сделал), но это не обязательно. Обязательно соблюдайте правильную полярность, указанную маркировкой на плате зарядного устройства, так как плата не защищена от обратной полярности аккумулятора!

Затем припаяйте провод от положительного выхода зарядного устройства (расположенного рядом с положительным проводом аккумулятора) к положительному входу повышающего преобразователя. Затем припаяйте провод от отрицательного вывода (расположенный рядом с отрицательным проводом аккумуляторной батареи) к общему (центральному) контакту главного тумблера. Наконец, припаяйте провод от нормально разомкнутого контакта переключателя к отрицательному входу повышающего преобразователя. Если подключить мультиметр к выходу повышающего преобразователя и включить главный выключатель, должно отображаться напряжение.

Поскольку нашему Arduino, ЖК-экрану и датчику потока требуется 5 В, мы должны установить выход повышающего преобразователя на 5 В. Это достигается поворотом ручки потенциометра небольшой отверткой. Включив главный выключатель, подключив батарею и подключив мультиметр к выходу повышающего преобразователя, медленно поворачивайте потенциометр, пока выход не покажет 5 В. Будет сложно получить точное значение 5000 В, но стремитесь к напряжению от 4,9 до 5,1 В.

Поскольку мой индивидуальный корпус удерживается несколькими винтами, нам не нужно открывать корпус каждый раз, когда его нужно заряжать. Я использовал для этого разъем для наушников 3,5 мм. Я использовал именно этот разъем от Digikey (именно для него рассчитаны вырезы в моем корпусе), но и этот от Banggood тоже должен работать.

Сначала я вставил разъем в самое нижнее отверстие корпуса. Поскольку большую часть времени он будет отключен от сети и, следовательно, подвержен проникновению влаги, лучше всего установить его на дне, чтобы вода не капала внутрь. Установив стопорную шайбу и затянув гайку, я припаял два провода к ушкам «наконечник» и «втулка» на разъеме. Распиновка разъема показана на одном из моих аннотированных изображений. Другой конец «рукавного» провода я припаял к отрицательному входу зарядного устройства, рядом с портом micro USB. Наконец, я припаял "концевой" провод к контактной площадке + 5V с другой стороны порта USB. USB-порт на зарядном устройстве не будет использоваться, потому что будет трудно сделать так, чтобы USB-порт проник в корпус, не допуская попадания влаги.

Шаг 6: зарядный кабель

Зарядный кабель
Зарядный кабель
Зарядный кабель
Зарядный кабель
Зарядный кабель
Зарядный кабель

Поскольку в качестве порта для зарядки мы используем аудиоразъем 3,5 мм, нам нужно сделать переходный кабель с штекером 3,5 мм на одном конце и штекером USB A на другом. Это позволит нам использовать любое стандартное зарядное устройство для мобильных устройств (например, зарядное устройство для iPhone) для зарядки этого устройства.

Вы можете купить комплект USB-кабеля с разъемом USB A на одном конце и лужеными проводами на другом конце, но если вы похожи на меня, у вас, вероятно, есть дюжина случайных USB-кабелей, которые вам не нужны. Вместо того, чтобы покупать USB-кабель в сборе, я просто купил кабель micro USB - USB A, который мне не нужен, и отрезал разъем micro USB.

Затем я снял белую оболочку с кабеля, чтобы увидеть внутри только два провода: красный и черный. Некоторые кабели USB имеют четыре провода: красный, черный, зеленый и белый. Зеленый и белый - для передачи данных, их можно игнорировать. Снимите изоляцию только с красного и черного проводов.

Далее вам понадобится штекер 3,5 мм. Я использовал этот от Banggood. Припаяйте красный провод от USB-кабеля к среднему язычку (который является концом разъема), а черный провод к языку с длинным рукавом. Смотрите мои фото для уточнения.

Я рекомендую всегда вставлять штекер 3,5 мм перед штекером USB, так как процесс подключения кабеля может привести к замыканию штекера на металлическую розетку.

Шаг 7: О датчике потока

О датчике потока
О датчике потока
О датчике потока
О датчике потока
О датчике потока
О датчике потока
О датчике потока
О датчике потока

Я купил этот датчик потока на Banggood за 3,87 доллара. Прежде чем использовать его, я решил разобраться, как он работает.

Дизайн на удивление прост и гениален. Электроника полностью защищена от воды. Есть свободно вращающийся пропеллер, который вращается медленнее или быстрее в зависимости от скорости потока. В одной точке пропеллера находится магнит. Снаружи датчика находится небольшой отсек, в котором находится небольшая печатная плата с двумя компонентами: резистором и датчиком Холла. Каждый раз, когда магнит проходит мимо датчика Холла, он переключается между высоким и низким. Другими словами, он переключается между 5В и 0В каждый раз, когда винт вращается.

Для считывания показаний датчика мы подаем + 5В на красный провод, отрицательный на черный провод и считываем цифровой сигнал с желтого провода. На фото моего осциллографа видно, как меняется сигнал при включении потока. Сначала сигнал постоянно ноль вольт. Когда поток начинается, частота импульсов быстро набирает скорость и достигает устойчивого состояния.

Согласно даташиту датчик выдает 450 импульсов на литр. Это будет важно позже, когда мы будем писать программное обеспечение.

Шаг 8: Подключение датчика потока

Проводка датчика потока
Проводка датчика потока
Проводка датчика потока
Проводка датчика потока
Проводка датчика потока
Проводка датчика потока
Проводка датчика потока
Проводка датчика потока

Датчик потока поставляется с 3-контактным разъемом JST-XH. Это не идеально, потому что провода слишком короткие, а в разъеме есть открытые контакты, которые могут легко закоротиться случайными каплями воды. Я заказал этот 3,5-мм аудиокабель в сборе от Digikey. Он имеет длину 3 фута, что является идеальной длиной, и у него есть луженые провода, что упрощает пайку. Я не рекомендую использовать старый шнур для наушников, так как у него очень тонкий эмалированный провод, который почти невозможно припаять.

Датчик потока имеет пластиковую крышку, удерживаемую двумя винтами с крестообразным шлицем. Просто удалите эти винты и вытащите печатную плату. Он не удерживается никаким клеем, его просто держит пластиковая крышка. Затем отсоедините три провода, нагревая их паяльником и снимая их по одному.

Затем припаяйте аудиокабель 3,5 мм к контактным площадкам. Предлагаю подобрать цвета так, как это сделал я. Эта конфигурация имеет + 5 В на наконечнике, сигнал на кольце и заземление на втулке. Это та же конфигурация, что и для порта зарядки, начиная с шага 6. Если вы случайно подключите зарядное устройство к порту датчика или наоборот, устройство не повредит.

Шаг 9: Установка датчика потока

Установка датчика потока
Установка датчика потока
Установка датчика потока
Установка датчика потока
Установка датчика потока
Установка датчика потока

До этого момента вся наша работа выполнялась в мастерской. А теперь пора в ванную!

Сначала я снял душевую лейку. Это выявило выступающую из стены небольшую часть трубы с наружной резьбой 1/2 дюйма NPS. Для удобства наш датчик потока имеет точно такой же размер резьбы! Единственная проблема заключается в том, что у датчика есть наружная резьба на обоих концах, поэтому мы будем требуется соединение "мама-мама".

В моем местном хозяйственном магазине были 1/2 муфты из латуни, железа и ПВХ. ПВХ-муфта была самой дешевой, поэтому я купил ее. Хотя, оглядываясь назад, латунные или стальные муфты выглядели бы лучше.

Когда у вас есть муфта, просто прикрутите датчик потока к муфте, а затем навинтите другой конец муфты на трубу. На датчике потока есть стрелка, указывающая предполагаемое направление потока. Убедитесь, что вы не устанавливаете его задом наперед, иначе измерения могут быть неточными. Наконец, прикрутите душевую лейку к концу датчика потока.

Конечно, я предполагаю, что в вашем душе используется резьба 1/2 дюйма NPS, как в моей. Если это не так, вам понадобятся дополнительные переходники.

Совет: нанесите немного тефлоновой сантехнической ленты на все резьбы, прежде чем скручивать детали вместе, чтобы предотвратить утечки. У меня не было под рукой, но я планирую добавить это в ближайшем будущем.

Шаг 10: Arduino и Perfboard

Arduino и перфорированные платы
Arduino и перфорированные платы
Arduino и перфорированные платы
Arduino и перфорированные платы
Arduino и перфорированные платы
Arduino и перфорированные платы

Так как нам придется провести много электромонтажа, неплохо было бы обзавестись перфорированной платой, чтобы все было немного аккуратнее. Я вырезал прямоугольник из перфорированной плиты размером примерно 1 на 2 дюйма. Затем я поместил свой Arduino Nano в середину платы и отметил, где проходили контакты заголовка. Затем я отрезаю две части женских заголовков, каждая по 15 штырей. Я припаял их к перфорированной плате, где ранее отмечал. Это позволит нам удалить Arduino для программирования.

Совет: отметьте ориентацию USB-порта Arduino, чтобы вы всегда подключали его к монтажной плате одинаково.

Шаг 11: Электромонтаж всего

Электромонтаж всего
Электромонтаж всего
Электромонтаж всего
Электромонтаж всего
Электромонтаж всего
Электромонтаж всего

Пришло время спаять все вместе! Я включил полную схему подключения, которой вы можете следовать, или посмотрите мои письменные инструкции ниже, если вы предпочитаете более управляемый подход.

Во-первых, я вырезал несколько штыревых контактов заголовка и припаял их к монтажной плате на шинах +5 В и заземлении. Затем я припаял еще два контакта заголовка, подключенных к контактам A4 и A5 на Arduino. Эти разъемы позволят нам подключать ЖК-экран с помощью перемычек «мама-мама».

Затем я припаял пару проводов от выхода повышающего преобразователя к шинам + 5В и заземлению. Это обеспечит питание Arduino, ЖК-дисплея и датчика потока.

После этого я отрезал два провода и подключил их к клеммам кнопки. Я припаял один провод к шине заземления, а другой к цифровому контакту 3.

Последняя часть, которую нужно припаять, - это датчик потока. Поскольку мы уже подключили к датчику штекер 3,5 мм, нам просто нужно припаять гнездо 3,5 мм. Сначала я припаял три провода - по одному к каждому язычку на разъеме. Затем я вставил домкрат в корпус и закрепил его гайкой. Наконец, я припаял гильзу к земле, наконечник к + 5 В, а кольцо к цифровому контакту 2.

Я решил использовать цифровые контакты 2 и 3 для кнопки и датчика потока, потому что они являются контактами аппаратного прерывания. Это значительно упростит написание кода.

Теперь мы закончили пайку, но нам все еще нужно подключить ЖК-дисплей. Поскольку мы припаяли разъемы, нам понадобилось всего четыре перемычки, соединяющих гнездо. Подключите вывод «Vcc» к + 5V, вывод «Gnd» к земле, вывод «SCL» к A5, а вывод «SDA» к A4. Чтобы ЖК-экран поместился в корпусе, нам нужно согнуть штыри разъема назад. Сгибание штифтов вперед и назад несколько раз приведет к усталости металла и приведет к поломке штифтов, поэтому я рекомендую согнуть их только один раз, и делайте это осторожно.

Теперь проводка завершена!

Шаг 12: Программирование

Программирование
Программирование

Теперь, когда все оборудование подключено, мы можем запрограммировать Arduino.

Я хочу, чтобы программа имела следующие возможности:

  • В первой строке отобразите быстро обновляемый счетчик общего количества литров.
  • Во второй строке отобразите общую стоимость воды или расход.
  • Когда идет душ, кнопка переключает между отображением стоимости или расхода.
  • Когда душ не работает, кнопка должна очистить все данные и сбросить экран.
  • Датчик следует считывать с помощью процедуры прерывания, чтобы избежать грубых методов опроса.
  • При обновлении экрана мы должны обновлять только те значения, которые изменились, а не перезаписывать весь экран каждый раз (это может вызвать заметное мерцание)

Программа имеет простую структуру. Используя функцию millis (), мы можем создавать задержки, которые фактически не останавливают выполнение программы. См. В этом руководстве пример мигания светодиода без использования функции delay ().

Функция millis () возвращает количество миллисекунд с момента включения Arduino. Создав переменную "previousMillis" и вычитая Millis () - previousMillis (), мы можем увидеть время, прошедшее с момента обновления previousMillis.

Если мы хотим, чтобы что-то происходило раз в секунду, мы можем использовать следующий блок кода:

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

previousMillis = millis (); toggleLED (); }

Это проверяет, не превышает ли разница между millis () (текущее время) и previousMillis (последнее время) 1000 миллисекунд. Если это так, первое, что мы делаем, - устанавливаем previousMillis равным текущему времени. Затем мы выполняем любые дополнительные шаги, которые захотим. В этом примере мы переключаем светодиод. Затем мы выходим из этого блока кода и завершаем оставшуюся часть функции loop (), прежде чем вернуться к началу и повторить все заново.

Преимущество использования этого метода перед простой функцией delay () заключается в том, что delay () устанавливает промежуток времени между инструкциями, но не учитывает время, необходимое для выполнения других инструкций в функции loop (). Если вы делаете что-то, что занимает больше времени, чем просто мигание светодиода, например, обновляете ЖК-экран, время, которое требуется, немалое, и после нескольких циклов оно увеличится. Если вы обновляете ЖК-экран на часах, он быстро станет неточным и будет отставать.

Итак, теперь, когда мы понимаем общую структуру программы, пришло время вставить инструкции. Вместо того, чтобы объяснять здесь каждую строчку кода, я предлагаю вам сначала прочитать прилагаемую блок-схему, которая дает общий обзор того, что делает программа.

После того, как вы увидели блок-схему, взгляните на прилагаемый код Arduino. Я прокомментировал почти каждую строку, чтобы было понятно, что делает каждая строка.

В коде есть несколько частей, которые вы, возможно, захотите изменить. Самое главное - это стоимость литра. В моем городе вода стоит 0,2523 цента за литр. Найдите следующую строку и измените это значение, чтобы оно соответствовало стоимости вашего проживания:

const float COST_PER_LITRE = 0,2523; // стоимость литра в центах с городского сайта

Если вы предпочитаете использовать галлоны вместо литров, замените все строки «LCD.print ()», которые относятся к «L» или «L / s», на «G» или «G / s». Затем удалите следующую строку:

const float CONVERSION = 450.0; // оставьте это без комментария для литров

… И раскомментируйте эту строку:

const float CONVERSION = 1703.0; // раскомментируйте это и удалите строку выше для галлонов

Вы, возможно, заметили в моем коде еще одну странность. Набор символов по умолчанию не включает символ «¢», и я не хотел использовать доллары, потому что в большинстве случаев стоимость будет отображаться как «0,01 доллара» или меньше. Поэтому я был вынужден создать своего персонажа. Для представления этого символа используется следующий массив байтов:

байт cent_sign = {B00100, B00100, B01111, B10100, B10100, B01111, B00100, B00100};

После создания этого массива специальный символ должен быть «создан» и сохранен.

lcd.createChar (0, cent_sign);

Как только это будет сделано, для печати пользовательского символа мы используем следующую строку:

lcd.write (байт (0)); // выводим знак центов (¢)

На ЖК-дисплее может отображаться до 8 пользовательских символов. Подробнее об этом здесь. Я также наткнулся на этот полезный онлайн-инструмент, который позволяет рисовать настраиваемый символ с помощью графического интерфейса и автоматически генерирует настраиваемый массив байтов.

Шаг 13: закрытие крышки

Закрытие крышки
Закрытие крышки
Закрытие крышки
Закрытие крышки
Закрытие крышки
Закрытие крышки

Наконец-то мы почти закончили!

Пора запихнуть всю электронику в корпус и надеяться, что крышка закроется. Но сначала нам нужно прикрепить 30-миллиметровые стойки. В комплект купленных мною стоек не входят такие длинные, но есть 20 мм и 10 мм, которые можно соединить вместе. Я вкрутил четыре стойки в отверстия в нижней части корпуса четырьмя винтами M3 (см. Изображения 1 и 2). Обязательно затяните их надежно, но не слишком сильно, иначе вы рискуете сломать пластиковый корпус.

Теперь мы можем разместить внутри всю электронику. Я прикрепил зарядное устройство и повышающий преобразователь к крышке с помощью двустороннего скотча, как показано на третьем изображении. Затем я обмотал изолентой оголенный металл на двух разъемах 3,5 мм, чтобы ничего не закорочить при контакте с разъемами.

Мне удалось подогнать Arduino, поместив его на бок, в нижнем левом углу, так, чтобы его порт USB был направлен вправо. Я использовал больше двустороннего скотча, чтобы прикрепить аккумулятор к нижней части корпуса под ЖК-экраном.

Наконец, когда все более или менее надежно зажато в коробке, крышку можно открутить еще четырьмя винтами M3.

Шаг 14: Тестирование

Тестирование
Тестирование
Тестирование
Тестирование
Тестирование
Тестирование
Тестирование
Тестирование

Сначала вставьте разъем 3,5 мм от датчика потока. Я рекомендую сделать это до включения устройства, потому что вилка может подключиться к нему при установке.

Затем включите главный выключатель питания. Пока нет воды, кнопка на передней панели не должна делать ничего, кроме очистки итогового значения и очистки экрана. Поскольку по умолчанию общая сумма будет равна нулю, кнопка пока ничего не делает.

Если включить душ, сумма должна начать увеличиваться. По умолчанию отображается стоимость. Если вы нажмете кнопку на передней панели, в нижней строке отобразится расход. Нажатие кнопки на передней панели будет переключать между отображением расхода и отображением стоимости, пока работает душ. Как только душ прекратится, нажатие кнопки на передней панели сбросит измерения и очистит экран.

Монтаж

Как вы решите установить устройство, зависит от планировки вашего душа. У некоторых душевых может быть выступ достаточно близко к душевой лейке, чтобы вы могли просто разместить там устройство. В душе у меня есть корзина с присосками, в которые я поместил устройство. Если у вас нет такой роскоши, как выступ или корзина, вы можете попробовать прикрепить устройство к стене с помощью двусторонней присоски. Это будет работать только в том случае, если вы используете стандартный корпус с гладкой подложкой или напечатали мой нестандартный корпус на принтере со стеклянной рабочей пластиной. Если у вашего корпуса грубая основа (как у меня), вы можете попробовать использовать двусторонний скотч, хотя он может оставить немного следов на стене душа, если вы попытаетесь снять устройство.

Исправление проблем

Экран включен, но подсветка выключена - убедитесь, что перемычка установлена на два контакта на стороне модуля I ² C.

Экран пустой, с включенной подсветкой - проверьте правильность адреса I²C, запустив сканер I²C.

Экран включен, но значения остаются равными нулю - проверьте, поступает ли сигнал от датчика, измерив напряжение на контакте 2. Если сигнала нет, проверьте правильность подключения датчика.

Экран пустой с выключенной подсветкой - убедитесь, что индикатор питания на Arduino горит, и убедитесь, что на экране есть питание.

Экран ненадолго включается, затем все останавливается - вероятно, вы установили слишком высокое напряжение на повышающем преобразователе (компоненты не выдерживают напряжения более 5В)

Устройство работает, но значения неверны - убедитесь, что датчик потока, который вы используете, имеет тот же коэффициент преобразования - 450 импульсов на литр. У разных датчиков могут быть разные значения.

Шаг 15: Теперь начните экономить воду

Улучшения

Текущая версия программного обеспечения работает достаточно хорошо, но в конечном итоге я хотел бы добавить возможность иметь разных пользователей (членов семьи, соседей по дому и т. Д.). Устройство будет хранить статистику каждого человека (общее количество воды и общее количество душей), чтобы отображать среднее потребление воды каждым человеком. Это может побудить людей соревноваться за использование наименьшего количества воды.

Также было бы здорово иметь возможность экспортировать данные для просмотра в электронной таблице, чтобы их можно было построить в виде графиков. Тогда вы сможете увидеть, в какое время года люди принимают душ чаще и дольше.

Все эти функции потребуют использования EEPROM - встроенной энергонезависимой памяти Arduino. Это позволит сохранить данные даже после выключения устройства.

Еще одна полезная функция - индикатор заряда батареи. На данный момент единственным признаком того, что устройство необходимо перезарядить, является отключение питания платы управления батареями. Было бы легко подключить дополнительный аналоговый вход для измерения напряжения батареи. Делитель напряжения даже не понадобится, так как напряжение батареи всегда меньше 5 В.

Некоторые из этих идей граничат с расширением возможностей, поэтому я больше не занимался разработкой программного обеспечения.

Остальное зависит от тебя!

Конкурс датчиков
Конкурс датчиков
Конкурс датчиков
Конкурс датчиков

Первое место в конкурсе датчиков

Рекомендуемые: