Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04
Всем привет!
Пару месяцев назад я сидел в своей комнате и думал о том, какой проект я хочу сделать для школьного задания. Я хотел сделать что-то, что подошло бы мне и принесло бы пользу в будущем. Внезапно в комнату вошла мама и стала жаловаться на то, что не пьет достаточно воды. Меня сразу осенило. Мне пришла идея сделать автоматический дозатор воды (как в кинотеатре), который ежедневно отслеживает ваше потребление воды.
С 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: Настройка веб-сервера и базы данных
Во-первых, лучше всего обновить и обновить систему с помощью следующей последовательности команд:
- sudo apt dist-upgrade --auto-remove -y
- sudo apt upgrade
- sudo apt update
- 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-принтере футляр, который можно найти здесь. Это дает датчику большую защиту от воды. Затем я просверлил прямоугольник в верхней части резервуара, чтобы установить датчик.
Рекомендуемые:
АВТОМАТИЧЕСКИЙ ДОЗАТОР ДЛЯ ЖИВОТНЫХ: 9 шагов
АВТОМАТИЧЕСКИЙ ДОЗАТОР КОРМА ДЛЯ ЖИВОТНЫХ: Вы когда-нибудь чувствовали, что тратите слишком много времени на кормление своего питомца? Вам когда-нибудь приходилось звать кого-нибудь, чтобы покормить ваших питомцев, пока вы были в отпуске? Я попытался исправить обе эти проблемы в моем текущем школьном проекте: Petfeed
Как сделать цепь аварийного сигнала избыточного расхода воды с использованием полевого МОП-транзистора Z44N: 7 шагов
Как сделать схему сигнализации о перетекании воды с использованием полевого МОП-транзистора Z44N: Привет друг, сегодня я собираюсь сделать схему сигнализации перелива воды. В основном эту схему мы можем использовать для определения перелива воды в нашем резервуаре для воды. в этом проекте используется МОП-транзистор IRFZ44N. Давайте начнем
Каждый литр на счету! Дозатор для воды Arduino «Щит»: 7 шагов (с изображениями)
Каждый литр на счету! Дозатор для воды Arduino «Щит»: Привет! С помощью этого руководства вы можете дозировать желаемое количество воды. Система может работать в мл и л. Мы будем использовать Arduino UNO, расходомер для подсчета количества воды, ЖК-дисплей для отображения статуса, кнопки для изменения настроек и реле для переменного тока
Измерение расхода с помощью расходомеров воды (ультразвуковые): 5 шагов (с изображениями)
Измерение расхода с помощью расходомеров воды (ультразвуковых): вода является критически важным ресурсом для нашей планеты. Мы, люди, нуждаемся в воде каждый день. Вода необходима для различных отраслей промышленности, и мы, люди, нуждаемся в ней каждый день. Поскольку вода становится все более ценной и дефицитной, потребность в эффективном мониторинге и человеке
Недорогой датчик расхода воды и внешний дисплей: 8 шагов (с изображениями)
Недорогой датчик расхода воды и внешний дисплей: вода - ценный ресурс. Миллионы людей не имеют доступа к чистой питьевой воде, и до 4000 детей ежедневно умирают от болезней, зараженных водой. Тем не менее, мы по-прежнему расточаем наши ресурсы. Основная цель этого