Оглавление:

Автоматический дозатор воды для отслеживания расхода: 6 шагов
Автоматический дозатор воды для отслеживания расхода: 6 шагов

Видео: Автоматический дозатор воды для отслеживания расхода: 6 шагов

Видео: Автоматический дозатор воды для отслеживания расхода: 6 шагов
Видео: Дозатор воды DOX 25 STM. Обзор. Как работает дозатор воды DOX 25 STM 2024, Июль
Anonim
Автоматический дозатор воды для отслеживания расхода
Автоматический дозатор воды для отслеживания расхода
Автоматический дозатор воды для отслеживания расхода
Автоматический дозатор воды для отслеживания расхода

Всем привет!

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

С Raspberry Pi, несколькими датчиками, помпой и небольшими знаниями я попытался сделать это как можно лучше.

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

Репозиторий GitHub:

Запасы

Микроконтроллеры

Raspberry Pi 4

Датчики и модули

Я использовал 4 датчика:

2xHC-SR04Ультразвуковой датчик

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

Техническая спецификация

1x датчик температуры DS18B20

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

Техническая спецификация

1x RFID-модуль RC522

RC522 - это RFID-модуль 13,56 МГц, основанный на контроллере MFRC522 от NXP semiconductors. Модуль может поддерживать I2C, SPI и UART и обычно поставляется с картой RFID и брелоком. Он обычно используется в системах посещаемости и других приложениях для идентификации человека / объекта. В этом проекте он используется для системы идентификации / входа в систему.

Техническая спецификация

И 2 исполнительных механизма:

1x перистальтический насос 12-24В

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

1x ЖК-дисплей

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

Техническая спецификация

Кожух

Говоря о корпусе, я сделал самодельную работу с расходными материалами с домашнего склада (в моем случае это Brico в Бельгии). Я использовал фанеру, которую обрезал до нужного размера. Я расскажу о том, как я обосновал свою позицию на следующем этапе, но вот вещи, которые вам понадобятся:

  • 3x фанерные доски
  • 1x маленькая воронка
  • 1x резервуар для воды (вы можете выбрать, какой объем вы хотите, я выбрал 10 л)
  • 1x поддон для сбора капель

Вы можете найти все материалы и цены в прилагаемой спецификации.

Шаг 1: Подключение всей электроники

Подключение всей электроники
Подключение всей электроники
Подключение всей электроники
Подключение всей электроники

Теперь, когда мы собрали всю электронику, самое время их подключить. Я сделал две схемы Фритцинга, одну макетную плату и одну схему, чтобы показать вам, как и где должна быть подключена вся электроника. Вы можете найти ссылку для загрузки Fritzing здесь: https://fritzing.org/download/. Как упоминалось ранее, я использовал Raspberry Pi и подключил RFID-сканер, два ультразвуковых датчика, один датчик температуры, ЖК-дисплей и перистальтический насос для воды.

Я приложил две схемы в PDF-файле, если вы хотите взглянуть на него поближе.

Шаг 2: настройка Raspberry Pi

Мы будем использовать Raspberry Pi для запуска и управления всем: серверной частью, интерфейсом и базой данных.

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

Шаг 1: Распбиан

Если вы используете новый Raspberry Pi, вам понадобится raspbian. Ссылку для скачивания и руководство можно найти здесь.

Шаг 2: Запись образа на SD

Теперь, когда у вас есть образ Raspbian, вам понадобится программа для записи образов (я рекомендую win32diskimager) для записи файла образа на SD-карту. Полное руководство можно найти здесь.

Шаг 3: вход в Raspberry Pi

Откройте «Powershell» и введите «ssh [email protected]». Если все пойдет хорошо, они попросят вас ввести пароль (пароль по умолчанию - всегда raspberry). Обычно при этом вы должны войти в Raspberry Pi. Теперь нам нужно внести некоторые изменения в наши настройки. Введите в терминале sudo raspi-config и нажмите Enter. Перейдите к параметрам локализации> изменить часовой пояс и установите его на свой часовой пояс. Вы также должны изменить страну своего Wi-Fi на свое местоположение. Наконец, перейдите к параметрам интерфейса и включите SPI, I2C и 1-wire. Это будет важно для правильного использования датчиков.

Шаг 4: Настройка подключения к Интернету

Мы будем использовать сеть Wi-Fi. Вы можете добавить свою домашнюю сеть через:

wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Вам придется перезагрузить Pi, чтобы установить соединение. Чтобы проверить, работает ли он, вы можете использовать ifconfig, чтобы проверить, есть ли IP-адрес.

Шаг 5: Настройка веб-сервера и базы данных

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

  1. sudo apt dist-upgrade --auto-remove -y
  2. sudo apt upgrade
  3. sudo apt update
  4. sudo apt autoremove

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

Apache

sudo apt install apache2 -y

PHP

sudo apt install php

sudo apt установить phpMyAdmin -y

Не забудьте установить безопасный пароль MySQL, когда он просит установить пароль.

MariaDB

sudo apt установить mariadb-server mariadb-client -y

sudo apt установить php-mysql -y

sudo systemctl перезапустить apache2.service

Шаг 6: Установка библиотек Python

Для бэкэнда нам понадобятся библиотеки для Python. Мы установим их с помощью pip3, потому что мы используем python3.

pip3 установить mysql-connector-python

pip3 установить flask-socketio

pip3 установить flask-cors

pip3 установить gevent

pip3 установить gevent-websocket

sudo apt установить python3-mysql.connector -y

pip3 установить mfrc522! (нам понадобится это, чтобы использовать сканер RFID)

Шаг 7. Подготовка кода Visual Studio

Для запуска кода я рекомендую использовать Visual Studio Code для подключения Raspberry Pi к. Ссылку для загрузки для установки VSC можно найти здесь.

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

Шаг 3: Создание базы данных

Создание базы данных
Создание базы данных

Мы будем хранить все данные наших датчиков и пользовательские данные в базе данных.

Моя база данных состоит из 5 таблиц:

Устройство

Таблица Device имеет DeviceID, который ссылается на само устройство. DeviceName дает имя устройства, в данном случае ультразвуковой датчик, датчик температуры,… DeviceType указывает тип устройства (датчик или исполнительный механизм).

История

Таблица History содержит всю историю датчиков, вместе с датой (HistoryDate), когда история была добавлена, и значением момента в истории. У него также есть два внешних ключа:

  • DeviceID, чтобы связать конкретный журнал с устройством.
  • UserID, чтобы связать конкретного пользователя с журналом (это потому, что мы используем RFID, и мы хотим добавить журнал истории для одного конкретного пользователя)

Пользователь

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

Контейнер

Table Container состоит из различных контейнеров. У него есть идентификатор, ContainerLocation (это может быть предприятие, дом или что-то еще). Наконец, у него есть MaxLevel, который означает максимальный объем контейнера.

Настройки

Table Settings имеет SettingsID и отслеживает DailyGoal каждого пользователя + дату добавления DailyGoal пользователем. Это объясняет UserID внешнего ключа.

Дамп базы данных можно найти в моем репозитории GitHub в разделе База данных.

Шаг 4: Настройка серверной части

Нет проекта без работающего бэкэнда.

Бэкэнд состоит из 4 разных вещей:

помощники

Помощники - это все классы, используемые для различных датчиков и исполнительных механизмов. Есть помощник для датчика температуры (DS18B20), для ультразвуковых датчиков (HCSR05), которые могут измерять расстояние, и для ЖК-дисплея, чтобы иметь возможность писать сообщения на экран.

хранилища

В папке репозиториев вы найдете 2 файла Python:

  • Database.py - помощник для извлечения строк из вашей базы данных. Это упрощает выполнение и чтение базы данных.
  • DataRepository.py, который содержит все запросы SQL, которые используются в основном коде (app.py). Они используются для получения, обновления или удаления данных из базы данных.

app.py

Это основной бэкэнд-код проекта. Он выполняет настройку, определяя все контакты и режимы, и содержит код для работы насоса, получения температуры, получения доступа к пользователю и т. Д. Он также содержит маршруты, используемые для получения данных из базы данных и всех файлов socketio.on. Для каждой HTML-страницы свой socketio.on, чтобы каждая функция работала в нужное время.

config.py

У нас остался один файл: config.py. Это файл с параметрами конфигурации для подключения к вашей базе данных. Не забудьте указать учетные данные своей базы данных.

Бэкэнд можно найти в моем репозитории в разделе Backend.

Шаг 5: Настройка внешнего интерфейса

Настройка внешнего интерфейса
Настройка внешнего интерфейса
Настройка внешнего интерфейса
Настройка внешнего интерфейса

Что касается Frontend, я начал с создания дизайна того, как мой веб-сервер должен выглядеть в AdobeXD. Я использовал цвета своего логотипа: оранжевый и два разных оттенка синего. Я постарался сделать дизайн как можно более простым и создал водяную каплю, которая показывает процент того, насколько вы достигли своей цели дня.

В моем репозитории GitHub вы найдете мой Frontend в разделе Code> Frontend. Важно, чтобы вы вставили это в свою папку / var / html вашего Raspberry Pi, чтобы сделать его доступным с веб-сервера.

Он состоит из пары файлов HTML, которые ведут на разные страницы. Вы также найдете мой screen.css со всем необходимым CSS, чтобы он выглядел как мой проект. Наконец, в скриптах у вас будут разные файлы JavaScript. Эти скрипты связываются с моим сервером, чтобы отображать данные из моей базы данных или серверной части.

Бэкэнд можно найти в моем репозитории под Frontend.

Шаг 6: Создание обсадной колонны

Создание корпуса
Создание корпуса
Создание корпуса
Создание корпуса
Создание корпуса
Создание корпуса

Если мы говорим о моем случае, то есть две основные части:

Внешний корпус

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

Для точных измерений моей сборки я приложил PDF-файл со всеми размерами пластин, используемых в кейсе.

Водный танк

Резервуар для воды был непростой задачей. У меня есть резервуар для воды с отверстием на дне, поэтому мне пришлось заклеить его изолентой, чтобы предотвратить утечку. Вам понадобится четыре отверстия: одно для датчика температуры, другое для трубки помпы. один для трубки для наполнения резервуара и один для ультразвукового датчика. Для последнего я напечатал на 3D-принтере футляр, который можно найти здесь. Это дает датчику большую защиту от воды. Затем я просверлил прямоугольник в верхней части резервуара, чтобы установить датчик.

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