Оглавление:
Видео: UCL - IIOT Теплица: 11 ступеней
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Этот проект является продолжением нашего более раннего проекта с Greenhouse (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).
В этом проекте мы добавили базу данных, в которой мы регистрируем все наши данные, а затем визуализируем их с помощью красного узла для лучшего обзора.
В нашей базе данных мы регистрируем такие данные, как влажность, температура и влажность почвы, которые показаны на разных диаграммах.
Помимо регистрации данных, мы также можем контролировать, какой профиль активен в теплице, и управлять им удаленно.
Затем мы также можем управлять насосом и вентилятором вручную.
Шаг 1. Руководство по установке
Первый шаг - установить все различные компоненты.
Внутри скобок () мы указали, куда подключается компонент. Так, например, Arduino подключается к Raspberry Pi через USB-кабель.
Используемое оборудование:
- Ардуино (Raspberry Pi)
- Малина Pi 3 B +
- Влагомер почвы (Arduino)
- Датчик DHT11 (Arduino)
- Погружной водяной насос HG-320 (реле)
- Реле 5V (Arduino)
- Компьютерный вентилятор (реле)
- Электропитание 230 В (насос)
Используемое программное обеспечение:
- Raspbian (ОС для Raspberry Pi)
- IDE Arduino
- Python (Raspberry Pi) - PySerial- MySQLclient
- Node-Red (Raspberry Pi) - Pythonshell - Summariser - MySQL - Панель инструментов
- Сервер MySQL (freemysqlhosting.net)
Сначала вам нужно будет подключить аппаратные компоненты, поэтому следуйте этому руководству, чтобы построить теплицу: Руководство по установке.
Затем вам нужно будет установить Raspbian OS на Raspberry Pi. После этого вам нужно будет установить Python, а затем установить библиотеки python.
Следующим шагом является установка Node-Red на Raspberry Pi, а затем перейдите к диспетчеру поддонов и установите указанные ранее модули.
Затем перейдите на этот сайт Free MySQL Server и создайте бесплатный сервер MySQL.
Когда все это будет сделано, вы готовы перенести скрипт python на Raspberry Pi, импортировать скрипт Node-Red и загрузить код для Arduino.
Шаг 2: демонстрация контроля
Шаг 3: Список частей / программного обеспечения, используемых в проекте
Мы использовали следующую технологию для изготовления теплицы
- Ардуино
- Raspberry Pi
- Узел-красный
- Python
- PHPMyAdmin
Шаг 4: Список I / 0
Шаг 5: Схема подключения
Шаг 6: Код Arduino
Код Arduino работает путем печати данных, измеренных датчиками, в последовательном соединении, где они считываются Raspberry Pi и передаются в базу данных.
Arduino также имеет несколько цифровых входных контактов, подключенных к Raspberry Pi, которые считывает Arduino, и если один из трех становится ВЫСОКИМ, профиль изменится из-за оператора IF.
Также мы обновили код, чтобы использовать Миллис вместо задержки, что позволяет постоянно читать кнопки и остальную часть кода вместо интервала старой задержки.
Шаг 7: Raspberry Pi 3 B +
Мы использовали Raspberry Pi 3 B + для подключения нашего Arduino к Интернету и базе данных MySQL. Это позволило нам хранить данные с наших датчиков и создавать визуальный интерфейс для конечного пользователя. Для пользовательского интерфейса мы использовали Node-Red с палитрой Dashboard.
Но прежде чем мы смогли показать данные наших датчиков на Node-Red, нам нужен был способ загрузки данных в базу данных MySQL, и для этого мы создали скрипт Python, который будет работать на нашем Raspberry Pi.
Шаг 8: Python
Скрипт Python используется для получения данных по последовательному каналу связи, идущему от Arduino. Затем сценарий отправляет данные в базу данных MySQL.
Мы использовали две библиотеки: pyserial и mysqlclient.
Итак, первым шагом будет загрузка этих двух библиотек:
- PySerial
- MySQLclient
PySerial используется для сбора данных от Arduino через последовательную связь.
устройство = '/ dev / ttyUSB0'
arduino = serial. Serial (устройство, 9600)
Первая строка используется для определения нашего COM-порта. На Raspberry Pi это / dev / ttyUSB0, который мы используем для Arduino. Вторая строка предназначена для открытия последовательного порта для Arduino. Мы просто определяем, какой COM-порт и с какой скоростью работает соединение.
Остальная часть кода выполняется в цикле while.
Затем мы используем несколько блоков Try и Except. Сначала код пытается запустить внутри блока Try, если это не удается, запускает блок Except. Но если блок Try работает нормально, он не запускает блок Except, а просто выполняет остальную часть кода.
Итак, внутри блоков Try у нас есть код, который считывает последовательную связь и затем отправляет ее в нашу базу данных MySQL.
гигролист = arduino.readlines (1)
templist = arduino.readlines (2) влажный список = arduino.readlines (3)
Таким образом, приведенный выше код предназначен для чтения строк в последовательной связи. Число в конце кода определяет строку, которая была прочитана в серийном номере. Итак, эти строки классифицируются по разным переменным.
Когда данные от Arduino получены, мы использовали модуль mysqlclient для отправки данных на наш сервер MySQL.
db = _mysql.connect (host = "sql7.freemysqlhosting.net", user = "sql7256552", passwd = "3ebtbP8FQ2", db = "sql7256552")
Эта строка предназначена для подключения к нашей базе данных MySQL. Он указывает сервер, имя пользователя, пароль и базу данных, к которой он должен подключиться внутри сервера. Здесь вы должны указать подключение к вашей БД MySQL.
db.query ("INSERTINTO` TempHumid` (`temp`,` humid`, `hygro`) VALUES (% s,% s,% s)"% (temp, humid, hygro))
Итак, здесь мы берем наше соединение с БД и делаем SQL-запрос. В запросе говорится, что значения необходимо вставить в таблицу «TempHumid», а затем в столбцы «temp», «humid» и «hygro». Последняя часть «(% s,% s,% s)» представляет собой форматирование строки и используется для предоставления базе данных формата, который она может читать.
И все это действие помещается в цикл while, чтобы мы продолжали получать данные, отправляемые на сервер MySQL.
Если вы хотите увидеть весь код, загрузите скрипт Python (TempHumid.py).
Шаг 9: MySQL
Для сервера MySQL мы использовали бесплатный сервис на www.freemysqlhosting.net. Мы могли бы создать локальный сервер на Raspberry Pi, но мы выбрали бесплатную услугу, чтобы сделать его полностью подключенным к облаку / Интернету.
Чтобы получить доступ к MySQL, вам нужно перейти на phpmyadmin.co и войти в систему с учетными данными из своей учетной записи freemysqlhosting.
Находясь внутри, вы должны создать таблицу под названием «TempHumid», внутри этой таблицы вы должны создать 4 столбца с именами «ID», «temp», «humid» и «hygro». В первом столбце (ID) нужно поставить галочку в поле A_I (Auto Increment). Это сделано для того, чтобы в столбце ID каждому набору данных был присвоен идентификатор. Все следующие столбцы должны быть установлены как INT (целые числа), а стандартное значение равно NULL.
Шаг 10: красный узел
В нашем проекте мы использовали Node-Red для создания графического интерфейса. Node-Red работает на Raspberry Pi и собирает данные из нашей базы данных MySQL и показывает эти данные с помощью датчиков в форме пончика и графических диаграмм, чтобы конечный пользователь мог отслеживать данные. Преимущество Node-Red в том, что его можно просматривать на любом устройстве, а это означает, что размер сайта будет изменен для данного устройства, которое просматривает контент.
Чтобы установить программу Node-Red, посмотрите на шаг 1 и загрузите документ под названием «Node-Red.docx». Затем скопируйте и вставьте текст в Node-Red с помощью функции импорта в правом верхнем углу.
После этого измените настройки БД для вашей БД MySQL.