Съдържание:

Автоматичен дозатор за проследяване на консумацията: 6 стъпки
Автоматичен дозатор за проследяване на консумацията: 6 стъпки

Видео: Автоматичен дозатор за проследяване на консумацията: 6 стъпки

Видео: Автоматичен дозатор за проследяване на консумацията: 6 стъпки
Видео: РАЗДАЕТ WIFI СЛЕДИТ ЗА ЧЕЛОВЕКОМ 4G камера видеонаблюдения 2024, Юли
Anonim
Автоматичен дозатор за вода за проследяване на консумацията
Автоматичен дозатор за вода за проследяване на консумацията
Автоматичен дозатор за проследяване на консумацията
Автоматичен дозатор за проследяване на консумацията

Здрасти!

Преди няколко месеца бях в стаята си и мислех какъв проект искам да направя за училищна задача. Исках да направя нещо, което ме устройва и което ще ми бъде от полза в бъдеще. Изведнъж майка ми влезе в стаята и започна да се оплаква, че не пие достатъчно вода. Веднага имах богоявление. Идеята ми дойде да направя автоматичен разпределител на вода (като в киното), който проследява ежедневно консумацията на вода.

С Raspberry Pi, няколко сензора, помпа и малко познания се опитах да направя това възможно най -добро.

В края на всички стъпки ще имате работещ дозатор за вода, който пълни вашата бутилка с вода и който се свързва и взаимодейства с вашия Raspberry Pi. Не само ще можете да проследявате консумацията на вода въз основа на процент, но също така ще имате възможност да видите температурата и нивото на водата в контейнера за вода. И накрая, ще можете да проверите статистиката си. Ако това ви звучи интересно, не забравяйте да го проверите и да опитате сами!

Хранилището на GitHub:

Консумативи

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

Малина Пи 4

Сензори и модули

Използвах 4 сензора:

2xHC-SR04 ултразвуков сензор

Ултразвуковите сензори измерват разстоянието с помощта на ултразвукови вълни. Сензорната глава излъчва ултразвукова вълна и приема вълната, отразена обратно от целта. Ултразвуковите сензори измерват разстоянието до целта, като измерват времето между излъчването и приемането. Използвах две от тях, за да проверя дали има бутилка наблизо и да измеря разстоянието до водата в резервоара.

Информационен лист

1x Температурен сензор DS18B20

DS18B20 е 1-жичен програмируем температурен сензор от интегриран максимум. Той се използва широко за измерване на температурата в твърди среди като химически разтвори, мини или почва и др. Използвах го за измерване на температурата на водата в резервоара за вода.

Информационен лист

1x RC522 RFID модул

RC522 е 13.56MHz RFID модул, който се базира на контролера MFRC522 от полупроводници NXP. Модулът може да поддържа I2C, SPI и UART и обикновено се доставя с RFID карта и ключодържател. Обикновено се използва в системите за присъствие и други приложения за идентификация на лице/обект. В този проект се използва за система за идентификация/влизане.

Информационен лист

И 2 задвижвания:

1x перисталтична помпа 12-24V

Използвах перисталтична помпа, за да прекарам водата от резервоара до бутилка с вода. Повечето помпи бяха твърде бавни, затова отидох за 24V версия, която захранвам с 24V захранващ адаптер.

1x LCD дисплей

LCD дисплеят се използва за показване на IP адреса и важните съобщения. Течнокристалният дисплей (LCD) е плосък дисплей или друго електронно модулирано оптично устройство, което използва светлинно-модулиращите свойства на течните кристали, комбинирани с поляризатори.

Информационен лист

Корпус

Говорейки за корпуса, направих си сам с доставки от домашно депо (в моя случай Brico в Белгия). Използвах шперплат, който нарязах на правилния размер. Ще говоря за това как направих моята теза в следваща стъпка, но ето нещата, от които ще се нуждаете:

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

Можете да намерите всички материали и цени в приложената спецификация.

Стъпка 1: Свързване на цялата електроника

Свързване на цялата електроника
Свързване на цялата електроника
Свързване на цялата електроника
Свързване на цялата електроника

Сега, когато обобщихме цялата електроника, е време да ги свържем. Направих две вериги на Fritzing, една макет и една схематична, за да ви покажа как и къде трябва да бъде свързана цялата електроника. Можете да намерите връзката за изтегляне на Fritzing тук: https://fritzing.org/download/. Както бе споменато по -рано, използвах Raspberry Pi и свързах RFID скенер, два ултразвукови сензора, един температурен сензор, LCD и перисталтична помпа за водата.

Прикачих двете вериги в PDF, ако искате да го разгледате по -отблизо.

Стъпка 2: Настройване на Raspberry Pi

Ще използваме нашия Raspberry Pi, за да изпълняваме и контролираме всичко: бекенд, интерфейс и база данни.

Raspberry Pi не работи автоматично. Ще трябва да преминем през някои стъпки, за да започнем да го използваме.

Стъпка 1: Raspbian

Ако използвате чисто нов Raspberry Pi, ще ви трябва raspbian. Връзката за изтегляне и урокът могат да бъдат намерени тук.

Стъпка 2: Запис на изображението в SD

Сега, когато имате вашето Raspbian изображение, ще ви е необходим софтуер за писане на изображения (препоръчвам win32diskimager), за да запишете файла с изображение на SD картата. Пълният урок може да бъде намерен тук.

Стъпка 3: Влизане в Raspberry Pi

Отворете „Powershell“и въведете „ssh [email protected]“. Ако всичко върви както трябва, те ще ви поискат парола (паролата по подразбиране винаги е малинова). Обикновено това трябва да ви влезе в Raspberry Pi. Сега ще трябва да направим някои промени в нашите настройки. Въведете sudo raspi-config в терминала и натиснете enter. Придвижете се до опциите за локализация> променете часовата зона и я задайте за вашата часова зона. Трябва също да промените държавата си на wi-fi на собствено местоположение. Накрая отидете на опциите за свързване и активирайте SPI, I2C и 1-проводник. Това ще бъде важно за правилното използване на сензорите.

Стъпка 4: Настройка на интернет връзката

Ще използваме WiFi мрежа. Можете да добавите домашната си мрежа чрез:

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 ъпгрейд
  3. sudo apt актуализация
  4. sudo apt autoremove

След като това стане, ще ни трябват следните пакети за нашия уеб сървър и база данни:

Apache

sudo apt инсталирате apache2 -y

PHP

sudo apt инсталирате php

sudo apt install phpMyAdmin -y

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

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt инсталирате php -mysql -y

sudo systemctl рестартирайте apache2.service

Стъпка 6: Инсталиране на библиотеки на Python

За бекенда ще ни трябват някои библиотеки за Python. Ще ги инсталираме с помощта на pip3, защото използваме python3.

pip3 инсталирайте mysql-конектор-python

pip3 инсталирайте flask-socketio

pip3 инсталирайте колба-кор

pip3 инсталирайте gevent

pip3 инсталирайте gevent-websocket

sudo apt инсталирате python3 -mysql.connector -y

pip3 инсталирайте mfrc522! (ще ни трябва това, за да използваме RFID скенера)

Стъпка 7: Подготовка на Visual Studio Code

За стартиране на кода препоръчвам да използвате Visual Studio Code, за да свържете вашия Raspberry Pi към. Връзката за изтегляне за инсталиране на VSC може да се намери тук.

Ако все още не сте инсталирали Remote Development с помощта на SSH, можете да намерите стъпките за това тук.

Стъпка 3: Създаване на база данни

Създаване на база данни
Създаване на база данни

Ще съхраняваме всички наши сензорни данни и потребителски данни в база данни.

Моята база данни се състои от 5 таблици:

Устройство

Табличното устройство има DeviceID, който препраща към самото устройство. DeviceName дава името на устройството, в този случай ултразвуков сензор, температурен сензор, … DeviceType дава типа на устройството (сензор или задвижващ механизъм).

История

Историята на таблицата съдържа цялата история на сензора, заедно с датата (HistoryDate), историята е добавена и стойността на момента в историята. Той също така има два чуждестранни ключа:

  • DeviceID, за да свържете конкретен дневник с устройство
  • UserID, за свързване на конкретен потребител с дневник (това е така, защото използваме RFID и искаме да добавим дневника на историята към един конкретен потребител)

Потребител

Таблица Потребител се използва за създаване на система за вход на потребител с RFID скенера. Състои се от псевдоним, първо име, фамилно име, парола и RFID (това е RFID номер на етикет). Всеки потребител е свързан с контейнер (воден резервоар) и също така носи ContainerID като чужд ключ.

Контейнер

Табличен контейнер се състои от всички различни контейнери. Има идентификатор, ContainerLocation (това може да е предприятие, дом или нещо друго). И накрая, той има MaxLevel, който означава максималния обем, който контейнерът има.

Настройки

Настройките на таблицата имат ID на настройките и проследяват DailyGoal на всеки потребител + датата, на която DailyGoal е добавен от потребителя. Това обяснява UserID на външния ключ.

Дъмп на базата данни може да бъде намерен в моето хранилище на GitHub под Database.

Стъпка 4: Настройване на бекенда

Няма проект без работещ бекенд.

Бекендът се състои от 4 различни неща:

помощници

Помощниците са всички класове, използвани за различните сензори и задвижвания. Има помощник за температурния сензор (DS18B20), за ултразвуковите сензори (HCSR05), за да може да измерва разстоянието и за LCD, за да може да пише съобщения на екрана.

хранилища

В папката хранилища ще намерите 2 Python файла:

  • Database.py, който е помощник за изваждане на редове от вашата база данни. Улеснява изпълнението и четенето на базата данни.
  • DataRepository.py, който съдържа всички SQL заявки, които се използват в основния код (app.py). Те се използват за получаване, актуализиране или изтриване на данни от базата данни.

app.py

Това е основният бекенд код на проекта. Той извършва настройката, като дефинира всички пинове и режими и съдържа кода за работа на помпата, получаване на температурата, получаване на потребителя и така нататък. Той също така съдържа маршрутите, използвани за извличане на данни от базата данни и всички socketio.on. За всяка HTML страница има различен socketio.on, за да се уверите, че всяка функция работи в правилното време.

config.py

Остава ни един файл: config.py. Това е файлът с опциите за конфигуриране за свързване с вашата база данни. Не забравяйте да зададете идентификационните си данни за базата данни.

Бекендът може да бъде намерен в моето хранилище под Backend.

Стъпка 5: Настройване на Frontend

Настройване на Frontend
Настройване на Frontend
Настройване на Frontend
Настройване на Frontend

За Frontend започнах с дизайн на това как трябва да изглежда уеб сървърът ми в AdobeXD. Използвах цветовете в логото си, които са оранжево и 2 различни нюанса на синьо. Опитах се да запазя дизайна възможно най -опростен и създадох капка, която показва процента до каква степен сте постигнали целта си за деня.

В моето хранилище на GitHub ще намерите моя Frontend под Code> Frontend. Важно е да поставите това във вашата /var /html папка на вашия Raspberry Pi, за да стане достъпна от уеб сървъра.

Състои се от няколко HTML файла, които водят до различните страници. Ще намерите и моя screen.css с целия CSS, който ви е необходим, за да изглежда като моя проект. И накрая, ще имате различни JavaScript файлове под скриптове. Тези скриптове комуникират с моя бекенд, за да покажат данни от моята база данни или бекенд.

Бекендът може да бъде намерен в моето хранилище под Frontend.

Стъпка 6: Създаване на корпуса

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

Ако говорим за моя случай, има две основни части:

Външен корпус

Изградих корпуса от нулата. Използвах дъски от шперплат и ги нарязах в правилните размери. Завих всички дъски и пробих дупки за LCD дисплея, бутона, ултразвуковия сензор, за да открия дали има бутилка с вода и фунията за разпределяне на водата. Разделих кутията си на различни секции, за да поддържам водата и електрониката разделени и използвах кабелна тава, за да предпазя кабелите от изтичане на вода. В прикаченото видео можете да видите повечето аспекти на корпуса ми и как го направих. Също така отпечатах 3D бутон, който е залепен за нормален бутон. Накрая използвах тава за отцеждане, за да настигна цялата разлята вода. Използвах и панти, за да мога да отварям и затварям страничен панел, за да разгледам електрониката си. Винаги можете да използвате дозатор втора употреба или можете да използвате други материали.

За точните измервания на моята конструкция прикачих PDF с всички размери на плочите, използвани в кутията.

Резервоар за вода

Резервоарът за вода не беше лесна работа. Взех резервоар за вода с дупка на дъното, така че трябваше да го залепя, за да спра изтичането. Ще ви трябват четири отвора: един за температурния сензор, един за тръбите на вашата помпа. един за тръбите за пълнене на резервоара и един за ултразвуковия сензор. За този последен 3D отпечатах калъф за него, който можете да намерите тук. Това дава на сензора повече защита срещу вода. След това пробих правоъгълник в горната част на резервоара, за да опирам сензора.

Препоръчано: