Винный ящик с различными датчиками - Своими руками
Своими руками

Винный ящик с различными датчиками

>

Винный ящик с различными датчикамиЦель этого проекта – установить и настроить в ящик для хранения вина различные датчики, температуры, влажности и освещенности. Бонусом устанавливается сервопривод для закрывания/открывания замка.
Инструменты и материалы:
-Raspberry Pi 4 Model B;
-Серво мотор MG 996R;-Датчик DHT11;-Датчик DHT22;-Фоторезистор GL5537;-LCD – дисплей;-Электролитический конденсатор;-Потенциометр;-Тактильная кнопка;-Перемычки;-Резистор 10 кОм;-Резистор 470 Ом;-Винный ящик;-Макетная плата;
Шаг первый: винный ящик
Мастер использует стандартный деревянный ящик для хранения бутылок с вином. В ящике нужно сделать несколько отверстий, для дисплея и датчиков.
Винный ящик с различными датчикамиВинный ящик с различными датчикамиШаг второй: макетная плата
Сначала мастер собирает схему на макетной плате. Подключение следующие.
Макетная плата и GPIO
Обе стороны макета должны быть подключены к заземлению GPIO (Gnd) каждой стороны.
Одна сторона будет 3,3 В, а другая 5 В. Рекомендуется использовать внешний источник питания.
DHT11:
Сигнал -> GPIO (4)
Vcc (+) -> Макетная плата (+) (сторона 5 В)
Gnd (-) -> Макетная плата (-) (сторона 5 В)

DHT22:
Сигнал -> GPIO (26)
Vcc (+) -> Макетная плата (+) (сторона 5 В) + резистор 10 кОм
Gnd (-) -> Макетная плата (-) (сторона 5 В)

LDR (фоторезистор) и конденсатор:
LDR (-) + Конденсатор (+) -> GPIO (27)
LDR (+) – Макетная плата (+) (сторона 5 В)
Конденсатор (-) -> Макетная плата (-) (сторона 3,3 В)

ЖК-дисплей и потенциометр:
Vss -> Макетная плата (-) (сторона 5 В)
Vcc -> потенциометр (+)
V0 -> потенциометр (сигнал)
RS -> GPIO (21)
R / W -> Макетная плата (-) (сторона 5 В)
E -> GPIO (20)
DB0 -> GPIO (16)
DB1 -> GPIO (12)
DB2 -> GPIO (25)
DB3 -> GPIO (24)
DB4 -> GPIO (23)
DB5 -> GPIO (26)
DB6 -> GPIO (19)
DB7 -> GPIO (13)
Светодиод (+) -> потенциометр (+)
Светодиод (-) -> потенциометр (-)
Потенциометр (+) -> Макетная плата (+) (сторона 5 В)
Потенциометр (-) -> Макетная плата (-) (сторона 5 В)

Кнопка:
Кнопка (+) -> GPIO (18)
Кнопка (-) -> резистор 470 Ом -> Макетная плата (-) (сторона 3,3 В)

Сервопривод:
Сигнал -> GPIO (22)
Сервопривод (+) -> Макетная плата (+) (сторона 5 В)
Сервопривод (-) -> Макет (-) (сторона 5 В)
Эскиз схемы можно скачать ниже.
project_dominic_fritzingschema_bb_july.pdf
Винный ящик с различными датчикамиШаг второй: настройка базы данных/код
Весь код можно скачать здесь.
Теперь нужно сделать некоторые настройки и установить ПО.
База данных MYSQL.
Для базы данных нужно сделать новую таблицу и настроить ее следующим образом:
Ставим галочки
INT – PK-NN-AI
FLOAT – NN

Дальше нужно сделать рабочее пространство, в которое будут помещаться все файлы проекта:
Создаем файл с именем config.py и подключаем его к базе данных mysql.
Создаем каталог с именем репозитория.
В каталоге репосториев создаем по одному файлу с именами Database.py и DataRepository.py.

Database.py
Нужно установить пакеты с помощью pip3 install mysql-connector-python.
Менять в файле ничего не нужно.

DataRepository.py
Этот файл используется для хранения полученных данных от датчиков в базе данных.
Операторы SELECT используются для выбора определенных данных от датчика x.
Операторы INSERT используются для передачи данных от датчика x в базу данных.
Код можно скачать здесь.

app.py
Создаем файл с именем app.py.
Устанавливаем пакеты:
pip3 установить flask-socketio
pip3 установить flask-cors
pip3 установить gevent
pip3 установить vent-websocket
Пакеты можно скачать ниже.
app.py
Винный ящик с различными датчиками Flask используется для доступа к данным датчиков.
app.pyDataRepository.py
Винный ящик с различными датчикамиДля считывания показания датчиков DHT11 и DHT22 используется библиотека Adafruit.
Винный ящик с различными датчикамиВинный ящик с различными датчикамиДля настройки фоторезистора в коде есть функция read_sensor_light.
С помощью функции sensor_light вставляем данные в базу данных.
Винный ящик с различными датчикамиВинный ящик с различными датчикамиВинный ящик с различными датчикамиДля внешнего веб-сервера используются пакеты
index.html
style.css
(normalize.css)
Index.html
Внутри index.html также будут ссылки на
style.css для стилизации
script.js для jаvascript
Chart.js и библиотека chartJS для диаграмм
Библиотека SocketIO
Винный ящик с различными датчикамиДальше прописываем:
Получить данные из базы данных (getTempera)
Заполнить данные с помощью функции (showTemperature)
Заполнение динамических данных в наш index.html
Винный ящик с различными датчикамиТеперь на веб-сервере будут отображаться данные с датчика.
Винный ящик с различными датчикамиДля отображения диаграммы нужно сделать следующее.
Убедится, что в index.html есть страницы для каждой диаграммы, каждая диаграмма имеет собственный класс.
Дальше нужно получить данные из базы данных (getTemperatureData)
Создать 2 пустых списка (showTemperatureData)
Вставить данные в функцию рисования, чтобы создать диаграмму
Винный ящик с различными датчикамиШаг третий: управление сервоприводом и дисплеем
Функция open_chest содержит код управления серводвигателем. При нажатии кнопки на веб-сайте серводвигатель временно разблокирует винный ящик.
Винный ящик с различными датчикамиВинный ящик с различными датчикамиВ проект мастер установил дисплей.
Код находится в app.py
Винный ящик с различными датчикамиВинный ящик с различными датчикамиПосле проверки схемы на макетной плате мастер устанавливает электронику в винный ящик. Подключает питание, проверяет работу сервопривода.

SitesReady

Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного. - Альберт Эйнштейн

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.