Умная теплица на Arduino- делаем первые шаги
Теплицы предназначены для обеспечения оптимального микроклимата для роста и развития растений. Это могут быть и большие промышленные сооружения и небольшое место на подоконнике для выращивания любимого цветка. Но даже за самой крохотной теплицей на подоконнике нужен уход: осуществление полива, поддержание нужной температуры, уровня освещенности и т.п.
Многие с удовольствием занялись подобным хозяйством, вот только ни сил, ни времени для этого нет. И только мечта подсказывает: вот бы такую конструкцию, которая бы настолько умной, что делала бы все сама. Такая теплица окажется востребованной теми, кто не хочет тратить много времени на уход за растениями, а также может не иметь для этого возможности в случае длительного отсутствия — командировок, отпуска и т.п.
Мы и приступим к созданию подобной теплицы, назовем ее умной. А поможет нам создавать умную теплицу контроллер Arduino. Какие же функции будет выполнять умная теплица?
Во-первых, необходимо оперативно получать всю необходимую информацию об климатических параметрах нашей теплицы: температура и влажность воздуха, температура и увлажненность почвы, освещенность теплицы. Т.е. осуществлять мониторинг климатических параметров теплицы.
Какую проблему клиента решит функция мониторинга? Прежде всего — устранит беспокойство насчет того, все ли в порядке c растениями во время его отсутствия: есть ли вода в системе, не выключалось ли электричество, может ли системе вентиляции обеспечить нужную температуру, если в помещении стало слишком жарко и т.п.
Выводить данные мониторинга можно на дисплей, или с помощью светодиодов оповещать о критических значениях климатических параметров, или получать данные через интернет или на планшет.
Далее, необходимо реализовать возможность управления теплицей – осуществлять полив, обогрев, вентиляцию растений, регулировать освещенность растений. Управление можно с помощью автоматики, или удаленно (через интернет или через телефон (планшет)).
Следующий этап – функция автономности теплицы. При снижении уровня увлажненности почвы ниже определенного значения, необходимо включить полив, при снижении температуры в теплице необходимо включить обогрев, освещенность теплицы необходимо производить по определенному циклу.
Рисунок 1. Схематическое изображение умной теплицы
В наших уроках мы рассмотрим практическую реализацию проекта умной теплицы. Создадим проект умной теплицы –
«Домашний цветок». И начнем с реализации функции мониторинга параметров теплицы. Для мониторинга нам необходимо получать следующие данные о окружаещей среде нашего цветка:
- температура воздуха;
- влажность воздуха;
- увлажненность почвы;
- освещенность цветка.
Для реализации функции мониторинга нам понадобятся следующие детали:
- Arduino Uno;
- Кабель USB;
- Плата прототипирования;
- Провода «папа-папа» – 15 шт;
- Фоторезистор – 1 шт;
- Резистор 10 кОм – 1 шт;
- Датчик температуры TMP36 – 1 шт;
- Модуль температуры и влажности воздуха DHT11 – 1 шт
- Модуль влажности почвы – 1 шт.
Позиции 1-6 имеются в наборах серии «Дерзай» («Базовый», «Изучаем Arduino» и «Умный дом»), датчик температуры TMP36 имеется в наборах «Базовый» и «Изучаем Arduino». Ссылки на позиции 8 и 9 будут даны в конце статьи.
Сначала познакомимся с датчиками, которые будем использовать для функции мониторинга параметров нашего проекта.
C помощью фоторезистора (рисунок 2) осуществляют измерение освещенности. Дело в том, что в темноте сопротивление фоторезистора весьма велико, но когда на него попадает свет, это сопротивление падает пропорционально освещенности.
Рисунок 2. Фоторезистор
Аналоговый датчик температуры TMP36 (рисунок 2) позволяет легко преобразовать выходной уровень напряжения в показания температуры в градусах Цельсия. Каждые 10 мВ соответствуют 1 0С, Вы можете написать формулу для преобразования выходного напряжения в температуру.
0C = [ ( Vout в мВ ) - 500] / 10
Смещение -500 для работы с температурами ниже 0 0C.
Рисунок 3. Аналоговый датчик температуры TMP36
Датчик DHT11 состоят из емкостного датчика влажности и термистора. Кроме того датчик содержит в себе простенький АЦП для преобразования аналоговых значений влажности и температуры. Будем использовать датчик в варианте модуля для Arduino (рисунок 4).
Рисунок 4. Модуль DHT11
Модуль влажности почвы (рисунок 5) предназначен для определения влажности земли, в которую он погружен. Он позволяет узнать о недостаточном или избыточном поливе ваших домашних или садовых растений. Модуль состоит из двух частей: контактного щупа YL-28 и датчика YL-38, щуп YL-28 соединен с датчиком YL-38 по двум проводам. Между двумя электродами щупа YL-28 создаётся небольшое напряжение. Если почва сухая, сопротивление велико и ток будет меньше. Если земля влажная — сопротивление меньше, ток — чуть больше. По итоговому аналоговому сигналу можно судить о степени влажности.
Рисунок 5. Модуль влажности почвы
Теперь соберем на макетной плате схему, представленную на рисунке 6.
Рисунок 6. Схема соединения для мониторинга параметров для «Домашний цветок «.
Приступим к написанию скетча. Фоторезистор, датчик температуры TMP36 и модуль влажности почвы – обычные аналоговые датчики. Для датчика TMP36 мы можем преобразовать аналоговые значения в показания температуры в градусах Цельсия. Для работы с модулем DHT11 будем использовать Arduino библиотеку DHT (Скачать). Данные будем измерять с интервалом 5 секунд и значения выводить пока в последовательный порт Arduino.
Создадим в Arduino IDE новый скетч, занесем в него код из листинга 1 и загрузим скетч на на плату Arduino. Напоминаем, что в настройках Arduino IDE необходимо выбрать тип платы (Arduino UNO) и порт подключения платы.
Листинг 1.
// подключение библиотеки DHT #include "DHT.h" // тип датчика DHT #define DHTTYPE DHT11 // контакт подключения входа данных модуля DHT11 int pinDHT11=9; // контакт подключения аналогового выхода модуля влажности почвы int pinSoilMoisture=A0; // контакт подключения аналогового выхода датчика температуры TMP36 int pinTMP36=A1; // контакт подключения аналогового выхода фоторезистора int pinPhotoresistor=A2; // создание экземпляра объекта DHT DHT dht(pinDHT11, DHTTYPE); void setup() { // запуск последовательного порта Serial.begin(9600); dht.begin(); } void loop() { // получение данных с DHT11 float h = dht.readHumidity(); if (isnan(h)) { Serial.println("Failed to read from DHT"); } else { Serial.print("HumidityDHT11= "); Serial.print(h);Serial.println(" %"); } // получение значения с аналогового вывода модуля влажности почвы int val0=analogRead(pinSoilMoisture); Serial.print("SoilMoisture= "); Serial.println(val0); // получение значения с аналогового вывода датчика температуры TMP36 int val1=analogRead(pinTMP36); // перевод в мВ int mV=val1*1000/1024; // перевод в градусы цельсия int t=(mV-500)/10; Serial.print("TempTMP36= "); Serial.print(h);Serial.println(" C"); // получение значения с аналогового вывода фоторезистора int val2=analogRead(pinPhotoresistor); Serial.print("Light= "); Serial.println(val2); // пауза 5 секунд Serial.println( ); delay(5000); }
После загрузки скетча на плату, открываем монитор последовательного порта и наблюдаем вывод значений с показаниями наших датчиков (рисунок 7).
Рисунок 7. Вывод значений с показаниями наших датчиков в монитор последовательного порта Arduino.
А вот и наш выращиваемый цветок (рисунок 8).
Рисунок 8. Проект «Домашний цветок»
Смотреть показания датчиков через последовательный порт не совсем удобно, в следующем уроке рассмотрим более удобную индикацию показаний.
Один комментарий
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.
Добрый день!
А где скачивалась библиотека? dht