Съдържание:

Безконтактна чешма с вода: 9 стъпки (със снимки)
Безконтактна чешма с вода: 9 стъпки (със снимки)

Видео: Безконтактна чешма с вода: 9 стъпки (със снимки)

Видео: Безконтактна чешма с вода: 9 стъпки (със снимки)
Видео: Leap Motion SDK 2024, Ноември
Anonim
Безконтактна чешма с вода
Безконтактна чешма с вода

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

Търсех проект, който да провери всички изисквания, поставени от моите учители, и в същото време да ми бъде забавно да го направя. Когато търсех тема, нямаше как да не се почувствам вдъхновен от Covid-19 (Това беше точно преди да се разпространи в световен мащаб.) Избрах за контакт с по-малко чешма/дозатор, тъй като това би предложило за начин на пиене на вода, без да докосвате някои бутони, преди водата да излезе.

Този проект използва сензор за разстояние, за да открие дали чаша или чаша е поставена под изхода на водата, фонтанът ще продължи да извежда вода за 60 секунди (100 мл / минута). Това е, за да стане по -последователно, защото установяването дали стъклото е било извадено се оказа твърде трудно/бавно на задача, поради което беше поставен таймер. След като чашата ви се напълни със 100 мл вода, можете да изчакате 5 секунди и ако чашата е все още пред сензора за разстояние, тя ще продължи да се пълни друг път (това означава, че има и изчакване от 5 секунди между напълването на две различни елементи).

Консумативи

Компоненти

- 1x RaspberryPi (използвах четвъртата версия, но може да работят и по-старите версии)- 1x S8050 транзистор или 1x PN2222 транзистор може да работи също- 1x фоторезистор- 1x HC-SR04 (ултразвуков сензор за разстояние)- 1x RFID-RC522- 3x различен цветове светодиоди (син, жълт, червен)- 1x LCD1602- 1x активен зумер- 1x PCF8574- 1x MCP3008- 1x водна помпа (използвана е перисталтична помпа 12v, връзка към този елемент)

- 1x DC захранване (12v, 600mAh)- 1x захранваща тухла с 3 точки- 3x макети (вероятно бихте могли да използвате по-малко)- T-cobbler за RaspberryPi GPIO щифтове- T-cobbler кабел (за свързване между pi и cobbler)

Използвани материали и инструменти

- Свредло със следните свредла:

- 4 мм (за предварително пробиване на отвори за винтовете) - 15 мм (за пробиване на отвори за сензора за разстояние)

- Всяка отвертка- 30 винта с дължина 45 мм- 6 винта по 20 мм- 2 панти за вратата- Плоча от MDF около 130 см на 80 см- Няколко файла

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

Сглобяване на веригата
Сглобяване на веригата
Сглобяване на веригата
Сглобяване на веригата
Сглобяване на веригата
Сглобяване на веригата

За веригата имаме 2 сензора, датчик за разстояние и фоторезистор. Сензорът за разстояние се използва за откриване дали е поставена чаша в обсега на фонтана и по избор добавих фоторезистор, този се използва за откриване дали корпусът е отворен от някой, който не трябва да го отваря. На всичкото отгоре имаме RFID четец, който може да се използва за удостоверяване на механик, който трябва да отвори кутията, за да напълни резервоара за вода, или за някакъв друг механичен проблем.

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

Добавих чертежа и схематичните изгледи на схемата по -долу.

Стъпка 2: Настройване на нашия RaspberryPi

За да настроите нашия RaspberryPi, ние ще изтеглим софтуера за изображения от сайта на Raspberry, като с него можете да изтеглите желаната от вас версия на Raspbian и да изобразите вашата SDCARD вместо вас. След като този инструмент свърши работата си, можете да отворите SDCARD в Windows Explorer, ще можете да видите зареждащия дял на вашия RaspberryPi. Тук ще намерим файл, наречен cmdline.txt (не отваряйте този файл в бележника, отворете го в Notepad ++ или друга IDE). Ще добавим ip = 169.254.10.1 в края на този файл, за да сме сигурни, че можем да се свържем с нашето устройство през ethernet (уверете се, че не добавяте никакви ENTERS в края на вашия файл, в противен случай ще имате проблеми).

Сега можете да поставите вашата SDCARD във вашия RaspberryPi и да я стартирате, да свържете Pi към компютъра си и да използвате Putty, за да се свържете с вашия Pi през SSH. Използвам следната команда, за да се свържа с моя Pi, вместо да използвам Putty. "ssh [email protected]" това може да изтече, така че бъдете търпеливи и изчакайте Pi да се зареди. След като бъдете подканени да въведете парола, ще попълним паролата по подразбиране за „малинка“. Не забравяйте да промените тази парола, след като влезете, за да предотвратите достъп на всеки с лоши намерения до вашия Raspberry Pi.

Сега ще конфигурираме нашия Pi, за да осигури необходимата функционалност за нашия код. Използвайте „sudo raspi-config“, за да отворите менюто за конфигурация и тук ще отидем до Опции за взаимодействие.

Тук ще включим следните опции:- SPI-I2C

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

Пакети: (изпълнете командите в реда, както е отбелязано тук)

Следното, за да получите най -новите актуализации за нашата актуализация на Pisudo apt && apt надстройка -y

Инсталирайте нашия MySQL сървър и уеб сървър- sudo apt install mariadb-server apache2

Ще използвам MySQL Workbench за настройка на базата данни по -късно в това ръководство, ако не използвате това и предпочитате phpmyadmin, можете да го инсталирате със следната команда, вие сте свободни да използвате всеки друг MySQL клиент, стига да са в състояние да импортират правилно базата данни.- sudo apt install phpmyadmin

След като направите всичко по -горе, трябва да създадем потребител за нашата база данни. Използвайте „sudo mysql -u root“, за да влезете във вашия MySQL сървър, тук ще създадем потребител, наречен db_admin със съответната парола, запазете тази парола е отбелязана някъде за по -късно в инструкциите. ПРЕДОСТАВЕТЕ ВСИЧКИ ПРИВИЛЕГИИ НА *. * НА "db_admin"@"%" ИДЕНТИФИРАНО ОТ "yourPasswordHere" С ГРАНЦИЯ ОПЦИЯ;

Използвайте командата "\ q", за да излезете от терминала на MySQL.

Пакети на Python: Все още трябва да инсталираме някои пакети на python, преди да продължим, изпълнете командата по -долу, за да се уверите, че всичко е там за безупречно изживяване.

sudo pip3 install Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

Както и следните MySQL свързване на пакети на python sudo apt install python3 -mysql.connector -y

Ако всичко е наред, сега можете да посетите своя Pi във вашия уеб браузър със следния адрес

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

Настройване на бекънда
Настройване на бекънда

Тук ще обясня как можете сами да настроите бекенда, първо да изтеглите rar файла отдолу, да го премахнете в някаква временна директория. Свържете се с вашия RaspberryPi с FileZilla или WinSCP със следните идентификационни данни:

IP: 169.254.10.1 Потребител: piPassword: raspberry (ако сте променили паролата, направете го и тук)

След това можете да продължите с прехвърлянето на файловете, които сте премахнали, във всяка директория, която искате в началната директория на потребителя pi. За улеснение ще приемем в тази настройка, че сме качили всички наши файлове в директорията с документи.

Дръжте вашата FTP програма отворена за следващата стъпка!

Сега отворете командния ред отново с вашата SSH връзка, защото ще трябва да направим някои промени в уеб сървъра, за да може интерфейсът да комуникира с бекенда. Ще отворим конфигурационния файл по подразбиране Apache2 и го променим леко: sudo nano /etc/apache2/sites-available/000-default.conf

Добавете следните редове под DocumentRoot в конфигурационния файл, който току -що отворихме: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

Можете да разгледате приложеното изображение за пример.

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

Преди да прехвърлим нашите файлове, ще трябва да направим нещо, преди да можем да започнем да прехвърляме нашите файлове от интерфейса. Отворете командния ред със SSH връзката, която сте направили преди, и използвайте командата по -долу, за да превключите към главния потребител на нашия RaspberryPi: "sudo su -"

След това можем да променим паролата на нашия root потребител със следната команда: "passwd" Това ще ви помоли да въведете нова парола, след като сте направили това, можете да се върнете към вашата FTP програма и да влезете с вашите root идентификационни данни:

IP: 169.254.10.1 Потребител: root Парола:

Изтеглете rar файла отдолу и го премахнете във временна папка, можете да преместите тези файлове във вашия RaspberryPi в следната директория/var/www/html/, след като направите това, можете да посетите интерфейса на http:/ /169.254.10.1, все още не можете да взаимодействате, защото бекендът още не работи, ще ви покажа по -късно в това ръководство как да направите това.

Стъпка 5: Импортиране на базата данни за нашия проект

Импортиране на базата данни за нашия проект
Импортиране на базата данни за нашия проект
Импортиране на базата данни за нашия проект
Импортиране на базата данни за нашия проект

Отворете любимата си програма за управление на MySQL сървър и се свържете с вашия Raspberry Pi с идентификационните данни, които създадохме в Стъпка 2.

Изтеглете дампа на базата данни отдолу и го импортирайте както обикновено, MySQL работен плот ще отидете в Файл> Отваряне на SQL скрипт и изберете дампа на базата данни, който сте изтеглили. След това натиснете CTRL + SHIFT + ENTER и SQL скриптът трябва да се изпълни и структурата за базата данни трябва да бъде създадена.

Добавих идентификационните данни, които използвах за моя RaspberryPi, като пример по -долу, както и няколко снимки на структурата на базата данни, можете да я разгледате и да опитате и да получите обща представа за това как всичко работи.

Стъпка 6: Стартиране на нашия проект

Стартиране на нашия проект
Стартиране на нашия проект
Стартиране на нашия проект
Стартиране на нашия проект

Преди да можем да стартираме нашия проект, трябва да променим идентификационните данни на базата данни във файла config.py, ако сте следвали инструкциите точно както е посочено в това ръководство, тогава можете да ги намерите в /home/pi/Documents/Backend/src/config.py тук трябва да промените идентификационните данни на променливата db_config, за да съответстват на тези, които създадохме по -рано за нашата база данни. Добавих пример за това, което ще видите в този файл по -долу.

След това ще добавим.service файл. Този файл ще се увери, че нашият проект стартира, когато стартира RaspberryPi, уверете се, че промените подходящо директорията, където сте инсталирали бекенд файловете. Използвайте следната команда за създаване на служебен файл: sudo nano /etc/systemd/system/dispenser.service Това ще създаде служебен файл и ще копира поставете кода по -долу в този файл.

[Единица] Описание = Диспенсер за вода След = mysql.услуга

[Услуга] Тип = simpleRestart = alwaysRestartSec = 1User = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py

[Инсталиране] WantedBy = многопотребителска цел

Променете реда, където пише /home/pi/Documents/Backend/index.py, до мястото, където сте инсталирали вашите бекенд файлове, ако не направите това правилно, проектът няма да бъде стартиран правилно! По -долу ще добавя примерен файл.

След като направите това и излезете от текстовия редактор, можем да активираме услугата със следните команди:- sudo systemctl daemon-reload- sudo systemctl активиране на дозатора- sudo systemctl стартиране на дозатора

И като допълнителна възможност можем да стартираме: sudo systemctl status dispenser Това ще покаже известна информация около нашата услуга, ако тя е активна или не, …

Стъпка 7: Делото

Случаят
Случаят
Случаят
Случаят
Случаят
Случаят
Случаят
Случаят

Поздравления, почти сме там, ще добавя няколко снимки, които точно ще покажат размерите, които използвах за моя проект, използвах MDF плочи с дебелина 18 мм, по желание можете да използвате различна дебелина. Моят корпус може да се използва като насока за проектиране на вашия или можете да пресъздадете това, което направих. (Ако използвате различна дебелина на MDF, моите рисунки вече няма да ви позволят да направите моя дизайн, не забравяйте да го адаптирате!) Панелите, които направих:- 2 панела с размери 32 см на 42 см (странични панели)- 1 панел с размери 24 см от 32 см (долна плоча)- 2 панела с размери 16 см на 24 см (предна плоча, където LCD остава и съседна плоча)- 1 панел с размери 28 см на 24 см (средната плоча се вижда отпред)- 1 панел с размери 30 см на 24 см (горна плоча)

Стъпка 8: Възхитете се на крайния продукт

Възхищавайте се на крайния продукт
Възхищавайте се на крайния продукт
Възхищавайте се на крайния продукт
Възхищавайте се на крайния продукт

Достигнахте края и до сега се надявам да успеете да превърнете всичко в реалност. Ако сте просто минувач, който четете, добре дошли, благодаря ви, че прочетохте до последната стъпка!

Похарчих много кръв, пот и сълзи в този проект, така че ще съм благодарен, ако оставите коментар, всяка критика за подобряването му е добре дошла!

Стъпка 9: Проблемите

Бих поставил проекта в сегашното му състояние като работещ прототип, който може да види много повече подобрения.

Кодовата база на бекенда е структурирана по такъв начин, че връзката главен подчинен може да бъде перфектно създадена, където един фонтан би действал като основен интерфейс, а всички други фонтани биха изтласквали данни и промени през REST api на главния. В кода има и остатъци от система за API -токени, тъй като това е било предвидено да бъде внедрено, но отрязано по -късно поради ограничения във времето.

Качих кода на моя сървър на Gitlab и там можете да разгледате кода като цяло:

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