Оглавление:

Бесконтактный водный фонтан: 9 ступеней (с изображениями)
Бесконтактный водный фонтан: 9 ступеней (с изображениями)

Видео: Бесконтактный водный фонтан: 9 ступеней (с изображениями)

Видео: Бесконтактный водный фонтан: 9 ступеней (с изображениями)
Видео: ТЕХНИКА БЕЗОПАСНОСТИ. Вид Грубейшего Нарушения ТРЕБОВАНИЙ ТБ при работе на СТАНКАХ. 2024, Июль
Anonim
Бесконтактный водный фонтан
Бесконтактный водный фонтан

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

Я искал проект, который бы соответствовал всем требованиям, установленным моими учителями, и в то же время мне было бы интересно делать. Когда я искал тему, я не мог не почувствовать вдохновение от Covid-19 (это было прямо перед тем, как он стал всемирной вспышкой). Я выбрал бесконтактный фонтан / дозатор для воды, поскольку он предлагает способ борьбы с вирусом. пить воду, не касаясь некоторых кнопок до того, как вытечет вода.

В этом проекте используется датчик расстояния, чтобы определить, была ли чашка или стакан помещена под выход воды. Затем фонтан будет выдавать воду в течение 60 секунд (100 мл / мин). Это сделано для того, чтобы сделать его более последовательным, потому что определение того, было ли оторвано стекло, оказалось слишком сложной / медленной задачей, поэтому был установлен таймер. После того, как ваш стакан был наполнен 100 мл воды, вы можете подождать 5 секунд, и если стакан все еще находится перед датчиком расстояния, он продолжит наполнение в другой раз (это означает, что также есть тайм-аут в 5 секунд между наполнением двух разных Предметы).

Запасы

Компоненты

- 1x RaspberryPi (я использовал 4-ю версию, но старые версии тоже могут работать) - 1x транзистор S8050 или 1x транзистор PN2222 также могут работать- 1x фоторезистор- 1x HC-SR04 (ультразвуковой датчик расстояния) - 1x RFID-RC522- 3x разных цвета светодиоды (синий, желтый, красный) - 1x LCD1602- 1x активный зуммер- 1x PCF8574- 1x MCP3008- 1x водяной насос (использовался перистальтический насос 12В, ссылка на этот элемент)

- 1x источник питания постоянного тока (12В, 600 мАч) - 1x блок питания с 3 точками - 3x макетные платы (вы, вероятно, могли бы использовать меньше) - T-cobbler для контактов RaspberryPi GPIO - T-cobbler кабель (для подключения между pi и cobbler)

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

- дрель со следующими сверлами:

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

- любая отвертка - 30 шурупов длиной 45 мм - 6 шурупов по 20 мм - 2 петли для двери - пластина из МДФ примерно 130 см на 80 см - пара напильников

Шаг 1: Сборка схемы

Сборка схемы
Сборка схемы
Сборка схемы
Сборка схемы
Сборка схемы
Сборка схемы

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

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

Я добавил макет и схематические изображения схемы ниже.

Шаг 2: Настройка RaspberryPi

Чтобы настроить наш RaspberryPi, мы загрузим программное обеспечение для создания образов с сайта Raspberry, с его помощью вы можете загрузить нужную версию Raspbian и создать образ своей SDCARD для вас. После того, как этот инструмент выполнит свою работу, вы можете открыть SDCARD в проводнике Windows, и вы увидите загрузочный раздел вашего RaspberryPi. Здесь мы найдем файл под названием cmdline.txt (не открывайте этот файл в блокноте, открывайте его в Notepad ++ или любой другой IDE). Мы добавим ip = 169.254.10.1 в конец этого файла, чтобы убедиться, что мы можем подключиться к нашему устройству через Ethernet (убедитесь, что вы не добавляете никаких ENTER в конце файла, иначе у вас возникнут проблемы).

Теперь вы можете вставить SDCARD в RaspberryPi и загрузить его, подключить Pi к компьютеру и использовать Putty для подключения к Pi через SSH. Я использую следующую команду для подключения к моему Pi вместо Putty. «ssh [email protected]» это может быть тайм-аут, так что наберитесь терпения и дождитесь загрузки Pi. После запроса пароля мы введем пароль по умолчанию «малина». Обязательно измените этот пароль после входа в систему, чтобы предотвратить доступ к Raspberry Pi со злых умыслов.

Теперь мы настроим наш Pi для обеспечения необходимой функциональности для нашего кода. Используйте «sudo raspi-config», чтобы открыть меню конфигурации, и здесь мы перейдем к параметрам взаимодействия.

Здесь мы включим следующие параметры: - SPI- I2C

Следуйте этому руководству, чтобы настроить беспроводное подключение к Интернету на вашем Pi, после того, как вы успешно это сделаете, мы сможем приступить к установке наших необходимых пакетов.

Пакеты: (выполните команды в указанном здесь порядке)

Следующее, чтобы получить последние обновления для нашего Pi- sudo apt update && apt upgrade -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" С ОПЦИЕЙ GRANT;

Используйте команду «\ q» для выхода из терминала MySQL.

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

sudo pip3 установить Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

А также следующие MySQL подключают пакеты pythonudo apt install python3-mysql.connector -y

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

Шаг 3. Настройка серверной части

Настройка серверной части
Настройка серверной части

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

IP: 169.254.10.1 Пользователь: pi Пароль: raspberry (если вы меняли пароль, сделайте это и здесь)

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

Держите свою программу FTP открытой для следующего шага!

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

Добавьте следующие строки под DocumentRoot в только что открытый файл конфигурации: ProxyPass / api / https://127.0.0.1:5000/api/ProxyPassReverse / api /

Вы можете посмотреть на прикрепленное изображение для примера.

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

Перед передачей наших файлов нам нужно будет что-то сделать, прежде чем мы сможем начать передачу наших файлов внешнего интерфейса. Откройте командную строку с помощью SSH-соединения, которое вы сделали ранее, и используйте следующую команду, чтобы переключиться на пользователя root нашего 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, убедитесь, что вы изменили каталог, в котором вы установили файлы backend. Используйте следующую команду, чтобы создать служебный файл: sudo nano /etc/systemd/system/dispenser.service Это создаст служебный файл и скопирует и вставит приведенный ниже код в этот файл.

[Единица] Описание = Диспенсер для водыAfter = mysql.service

[Сервис] Тип = simpleRestart = alwaysRestartSec = 1User = piExecStart = / usr / bin / python3 /home/pi/Documents/Backend/index.py

[Установить] WantedBy = multi-user.target

Измените строку, где написано /home/pi/Documents/Backend/index.py, туда, где вы установили свои серверные файлы, если вы не сделаете это правильно, проект не будет запущен правильно! Я добавлю пример файла ниже.

После того, как вы это сделаете и выйдете из текстового редактора, мы можем включить службу с помощью следующих команд: - sudo systemctl daemon-reload- sudo systemctl enable dispenser- sudo systemctl start dispenser

И в качестве дополнения мы можем запустить: sudo systemctl status dispenser Это покажет некоторую информацию о нашем сервисе, активен он или нет, …

Шаг 7: Дело

Дело
Дело
Дело
Дело
Дело
Дело
Дело
Дело

Поздравляем, мы почти закончили, я добавлю несколько изображений, которые точно покажут размеры, которые я использовал для своего проекта, я использовал плиты МДФ толщиной 18 мм, вы можете использовать другую толщину. Мой корпус можно использовать в качестве ориентира для дизайна вашего, или вы можете воссоздать то, что я сделал. (Если вы используете МДФ другой толщины, мои рисунки больше не позволят вам создать мой дизайн, обязательно адаптируйте его!) Сделанные мной панели: - 2 панели 32 см на 42 см (боковые панели) - 1 панель 24 см на 32 см (нижняя пластина) - 2 панели 16 см на 24 см (передняя панель, где остается ЖК-дисплей, и соседняя пластина) - 1 панель размером 28 см на 24 см (средняя пластина, если смотреть спереди) - 1 панель 30 см на 24 см (верхняя пластина)

Шаг 8: полюбуйтесь конечным продуктом

Полюбуйтесь конечным продуктом
Полюбуйтесь конечным продуктом
Полюбуйтесь конечным продуктом
Полюбуйтесь конечным продуктом

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

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

Шаг 9: проблемы

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

Кодовая база бэкэнда структурирована таким образом, что можно идеально создать отношение «главный-подчиненный», где один фонтан будет действовать как главный интерфейс, а все другие фонтаны будут передавать данные и изменения через REST api главного. В коде также есть остатки системы токенов API, поскольку она должна была быть реализована, но позже сокращена из-за нехватки времени.

Я загрузил свой код на свой сервер Gitlab, и там вы можете просмотреть код целиком:

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