Система полива растений на ардуино уно

Содержание

Дополнительные настройки:

Последним в списке меню идёт раздел «Дополнительные настройки«. Раздел включает в себя:

  • Настройки часов реального времени. Включает в себя 6 подразделов, с помощью которых можно выставить все необходимые значения:
    • Часы. Интервал значений: от 0 до 23
    • Минуты. Интервал значений: от 0 до 59
    • Секунды. Интервал значений: от 0 до 59
    • День недели. Интервал значений: от 0 до 6
    • День месяца. Интервал значений: от 1 до 31
    • Месяц. Интервал значений: от 1 до 12
    • Год. Интервал значений: от 0 до 99
  • Тест реле. В данный пункт входит 4 подпункта, ассоциированные с каждым из 4-х каналов I2C-реле. При выборе необходимого канала и подтверждения включения тестовой проверки, на реле будет подаваться напряжение в течении времени, указанного в RELE_TEST_FULL_TIME ;
  • Настройки работы системы оповещения (зуммер). Данный пункт отвечает за настройку звукового оповещения. Варианты значений: Выкл/Вкл/Авто
    • Выкл — выключить зуммер;
    • Вкл — включить зуммер;
    • Авто — перевести работу системы в автоматический режим, где звуковое оповещение будет включаться или выключаться по следующему условию:
      • Если хотя бы 1 из вышеперечисленных систем (освещение, проветривание, полив) установлена НЕ в автоматический режим работы, то после перевода работы зуммера в автоматический режим будет производиться отслеживание всех необходимых значений датчиков и при превышении или критическом понижении значений относительно установленных границ зуммер будет издавать прерывистый звук (время включения и выключения зуммера задано в ZUMMER_WORKING_TIME и ZUMMER_NOT_WORKING_TIME ) до тех пор, пока параметр не вернётся в допустимый диапазон значений;
      • Если хотя бы 1 из вышеперечисленных систем (освещение, проветривание, полив) установлена в ручном режиме на включение, то зуммер так же будет издавать прерывистый звук, сигнализирующий о том, что система включена в ручном режиме;
      • Для того, чтобы зуммер не издавал звуков ни в одной из вышеперечисленных ситуаций, достаточно перевести его в режим «Выкл«;

Программа для Arduino

Скетч достаточно простой. Для передачи данных на LCD дисплей вам необходимо подключить библиотеку Software Serial library. Если у вас в ее нет, скачать можно здесь: Arduino GitHub

// Пример использования датчика уровня влажности почвы с LCD дисплеем.

// В скетче считываются данные с датчика и отображается уровень влажности почвы

// Для работы с дисплеем используется библиотека softwareserial library

#include &ltSoftwareSerial.h&gt

// Подключите пин для обмена данными с использованием LCD дисплея по серийному протоколу RX к цифровому пину 2 Arduino

SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (не используется)

// Тут мы настраиваем некоторые константы.

// Настройка констант зависит от условий внешней среды, в которой используется датчик

int thresholdUp = 400;

int thresholdDown = 250;

// Настраиваем пин A0 на Arduino для работы с датчиком:

int sensorPin = A0;

void setup(){

mySerial.begin(9600); // устанавливаем скорость обмена данными на 9600 baud

delay(500); // ждем пока дисплей прогрузится

}

void loop(){

// Здесь мы объявляем строку, в которой хранятся данные для отображения

// на жидкокристаллическом дисплее. Значения будут изменяться

// в зависимости от уровня влажности почвы

String DisplayWords;

// В переменной sensorValue хранится аналоговое значение датчика с пина А0

int sensorValue;

sensorValue = analogRead(sensorPin);

// перемещение курсора к началу первой строки LCD дисплея:

mySerial.write(254);

mySerial.write(128);

// очистка дисплея:

mySerial.write(» «);

mySerial.write(» «);

// перемещение курсора к началу первой строки LCD дисплея:

mySerial.write(254);

mySerial.write(128);

// запись необходимой информации на дисплей:

mySerial.write(«Water Level: «);

mySerial.print(sensorValue); //Использование.print вместо .write для значений

// Теперь мы проведем проверку уровня влажности по сравнению с заданными нами предварительно числовыми константами.

// Если значение меньше thresholdDown, отображаем слова:

// «Dry, Water it!»

if (sensorValue

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

DisplayWords = «Dry, Water it!»;

mySerial.print(DisplayWords);

// Если значение не ниже thresholdDown надо провести проверку, не будет

// ли оно больше нашего thresholdUp и, если, больше,

// отобразить надпись «Wet, Leave it!»:

} else if (sensorValue >= thresholdUp){

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

DisplayWords = «Wet, Leave it!»;

mySerial.print(DisplayWords);

// Если полученное значение в диапазоне между минимальным и максимальным

// и почва была раньше влажной, а теперь сохнет,

// отображаем надпись «Dry, Water it!» (то есть, когда мы

// приближаемся к thresholdDown). Если почва была сухой, а теперь

//быстро увлажняется, отображаем слова «Wet, Leave it!» (то есть, когда мы

// приближаемся к thresholdUp):

} else {

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

}

delay(500); //Задержка в пол секунды между считываниями

}

В программе использованы различные минимальное и максимальное значения. В результате среднее значение может характеризовать влажность в зависимости от того, почва увлажняется или сушится. Если вы не хотите использовать это среднее значение, максимальное и минимальное значения можно принимать одинаковыми. Однако эксперименты показывают, что предложенный подход позволяет более точно характеризовать процессы, которые происходят в почве. Определенного точного среднего значения в реальных условиях не существует. Так что с выборкой диапазона можно поиграться. Если вас интересуют процессы, которые происходят в почве при взаимодействии с водой, почитайте тут, например: Wiki. Процессы достаточно сложные и интересные.

В любом случае, переменные вам надо настроить под собственные условия: тип почвы, необходимый уровень увлажнения. Так что тестируйте, экспериментируйте пока не определитесь с подходящими значениями.

Элементы платы

Измерительные электроды

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

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

Операционный усилитель MCP6002

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

Регулятор напряжения 3V3

Линейный понижающий регулятор напряжения TPS73033DBVR обеспечивает питание микросхемы 555 и других компонентов сенсора. Диапазон входного напряжения от 3,3 до 5 вольт. Выходное напряжение 3,3 В с максимальным выходным током 200 мА.

Troyka-контакты

Датчик подключается к управляющей электронике через три провода.

  • Сигнальный (S) — выходной сигнал сенсора. Напряжение на выходе датчика прямо пропорционально уровню измеренной электропроводности: чем выше влажность почвы, тем выше уровень сигнала на выходе датчика и соответственно наоборот. Максимальное выходное значения 3,3 вольта. Подключите к аналоговому пину микроконтроллера.
  • Питание (V) — соедините с рабочим напряжением микроконтроллера.
  • Земля (G) — соедините с землёй микроконтроллера.

Масштабирование решения

Мы описали решение для одного растения. Но обычно требуется поливать несколько растений. Помимо очевидного решения — подключения к Arduino нескольких помп и датчиков влажности — существует более простое и дешёвое. Достаточно в трубке, которая идёт в комплекте с помпой проделать шилом дырочки на расстоянии около 30 см и воткнуть в эти дырочки куски стержней от обычных шариковых ручек. Выглядеть это будет так:

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

Автоматический полив

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

Датчик уровня влажности в составе автоматической системы полива на основании Arduino:

Для автоматизации полива нам понадобятся дополнительные детали: возможно, шкивы, зубчатые шестерни, двигатель, муфта, транзисторы, резисторы. Список зависит от вашего проекта. Ну все, что может попасться под руку в быту. Более детально один из примеров показан ниже:

Это один из множества вариантов установки двигателя для системы автоматического полива. Колесо можно установить непосредственно в воде. В таком случае при его быстром вращении, вода будет подаваться к растению. В общем, можете проявить фантазию.

Схема подключения двигателя постоянного тока (статья с более подробным примером подключения двигателя к Arduino) на примере копии Arduino от SparkFun приведена ниже:

Ниже приведен скетч для Arduino (по сути он такой же как и приведенный выше с небольшим дополнением для управления двигателем):

// В скетче считываются данные с датчика и отображается уровень влажности почвы

// если почва сухая, начинает работать двигатель

// Для работы с дисплеем используется библиотека softwareserial library

#include &ltSoftwareSerial.h&gt

// Подключите пин для обмена данными с использованием LCD дисплея по серийному протоколу RX к цифровому пину 2 Arduino

SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (unused)

// Управляем двигателем с помощью пина 9.

// Этот пин должен обязательно поддерживать ШИМ-модуляцию.

const int motorPin = 9;

// Тут мы настраиваем некоторые константы.

// Настройка констант зависит от условий внешней среды, в которой используется датчик

int thresholdUp = 400;

int thresholdDown = 250;

// Настраиваем пин A0 на Arduino для работы с датчиком:

int sensorPin = A0;

void setup(){

pinMode(motorPin, OUTPUT); // устанавливаем пин, к которому подключен двигатель в качестве выхода

mySerial.begin(9600); // устанавливаем скорость обмена данными на 9600 baud

delay(500); // ждем пока дисплей прогрузится

}

void loop(){

// Здесь мы объявляем строку, в которой хранятся данные для отображения

// на жидкокристаллическом дисплее. Значения будут изменяться

// в зависимости от уровня влажности почвы

String DisplayWords;

// В переменной sensorValue хранится аналоговое значение датчика с пина А0

int sensorValue;

sensorValue = analogRead(sensorPin);

// перемещение курсора к началу первой строки LCD дисплея: mySerial.write(254);

mySerial.write(128);

// очистка дисплея:

mySerial.write(» «);

mySerial.write(» «);

// перемещение курсора к началу первой строки LCD дисплея: mySerial.write(254);

mySerial.write(128);

// запись необходимой информации на дисплей:

mySerial.write(«Water Level: «);

mySerial.print(sensorValue); //Использование.print вместо .write для значений

// Теперь мы проведем проверку уровня влажности по сравнению с заданными нами предварительно числовыми константами.

// Если значение меньше thresholdDown, отображаем слова:

// «Dry, Water it!»

if (sensorValue

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

DisplayWords = «Dry, Water it!»;

mySerial.print(DisplayWords);

// запуск двигателя на небольших оборотах (0 – остановка, 255 – максимальная скорость):

analogWrite(motorPin, 75);

// Если значение не ниже thresholdDown надо провести проверку, не будет

// ли оно больше нашего thresholdUp и, если, больше,

// отобразить надпись «Wet, Leave it!»:

} else if (sensorValue >= thresholdUp){

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

DisplayWords = «Wet, Leave it!»;

mySerial.print(DisplayWords);

// выключение двигателя (0 – остановка, 255 – максимальная скорость):

analogWrite(motorPin, 0);

// Если полученное значение в диапазоне между минимальным и максимальным

// и почва была раньше влажной, а теперь сохнет,

// отображаем надпись «Dry, Water it!» (то есть, когда мы

// приближаемся к thresholdDown). Если почва была сухой, а теперь

//быстро увлажняется, отображаем слова «Wet, Leave it!» (то есть, когда мы

// приближаемся к thresholdUp):

} else {

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

}

delay(500); //Задержка в пол секунды между считываниями

}

Удачи вам в реализации автоматического полива ваших растений!

Схема подключения и алгоритм работы в проекте «Автополив» на базе мк Arduino

Ниже представлен алгоритм и схема подключения проекта на платформе arduino. Автополив строится следующим образом:

  1. Помещаем плату для сенсора на микроконтроллер.
  2. Подключаем анализатор влажности с помощью платы, описанной выше, к аналогичному пину – А0.
  3. Присоединяем сенсор к микроконтроллеру:
    1. Контакт CS подключается к пину № 9 на плате.
    2. Дисплейные контакты SPI соединяются с соответствующим разъемом на той же плате.
  4. Силовой ключ вставляем в пин №4.
  5. Коммутатор подводим к силовому ключу в разъемы, обозначаются буквами p+, p-.
  6. Теперь подключаем водяную помпу с трубкой с помощью клеммника в контакты с буквами l+ и l-. Постепенно перед конструирующим человеком построится схема.
  7. Втыкаем сенсорную панель, анализирующую влажность, в горшок с цветком.
  8. Конец трубки вставляем с водой в почву. В случае, если растение вместе с горшком по весу не превышает 2 кг, закрепляем шланг отдельно. Иначе водяная капель может опрокинуть цветок.
  9. Опускаем водяную помпу в бутылку, наполненную водой.
  10. Подключаем конструкцию к электрическому питанию.

Ниже предлагаем вам две альтернативные схемы для нашего устройства:

Датчик анализирует статус влажности путем определения кислотности земли. Перед вставкой ирригатора в систему необходимо протестировать и откалибровать оборудование:

  1. Записываем сведения, выведенные на дисплей. При этом сенсор воткнут в сухой горшок. Это обозначается, как min влажности.
  2. Поливаем землю с растением. Ждем, когда вода до конца пропитает почву. Тогда показания на сенсорном экране покажут один уровень. Необходимо записать полученные сведения. Это значит max влажности.
  3. В записном блокноте фиксируем константы HUM_MIN и HUM_MAX тем значением, которое было получено в результате калибровки. Прописываем значения в программе, которую переносим затем на микроконтроллер.

Выше описано конструирование автополива для одного цветка. Однако у любителей комнатных растений дом обставлен горшками с цветами. С одной стороны такой вопрос кажется сложным: необходимо подключить несколько помп и анализаторов увлажнения почвы. Но существует более дешевое и простое решение по конструированию автополива.

В шланге от помпы проделываются 25 сантиметровые отверстия с помощью шила. В полученные дырочки втыкаются кусочки стержней ручек шарикового формата. В итоге получается:

  • горшки с растениями выстраиваются в ряд на подоконнике;
  • трубка устанавливается на цветочный горшок так, чтобы вода из каждого отверстия лилась в отдельный горшок;
  • вуаля: изобретение одновременно поливает все растения.

Пользователь самостоятельно выбирает время для полива, но только для одного цветка. Нередко цветки по массе и размерам одинаковы. Следовательно, почва в горшках сохнет за одинаковое время. Для этого придуман метод комбинации: количество горшков делится по группам равного веса и размера.

Пример кода для Arduino для проекта «Автополив»

Переходим к программированию кода:

//Скачиваем библиотеку для работы дисплея и подключаем к программе
#include "QuadDisplay2.h";
//Создаем константу, обозначающую контакт, к которому подключена водяная //помпа
#define VODPOMPA_PIN 4;
// Создаем константу, обозначающую контакт, к которому подключили //анализатор влаги земли
#define HUM_PIN A0;
//Min по влажности
#define HUM_MIN 200;
// Max по влажности
#define HUM_MAX 700;
//Время между проверками полива
#define INTER 60000 * 3;
//Объявляем переменную, в которой будет храниться значение влажности
unsigned int hum = 0;
//В этой переменной будем хранить временной промежуток
unsigned long Time = 0;
// Объявляем объект из класса QuadDisplay, затем передаем номерной знак //контакта CS
QuadDisplay dis(9);
//Создаем метод, отвечающий за работу дисплея
void setup(void)
{
//Запуск метода
  begin();
  // Объявляем функцию, которая будет отвечать за выход водяной помпы из      //контакта
  pinMode(VODPOMPA_PIN, OUTPUT);
  //На дисплее загорается число - 0
  dis.displayInt(0);
}
//Создаем метод, отвечающий за показатель влажности на данный момент void loop(void)
{
  //Рассчитываем показатель увлажнения на данный момент
  int humNow = analogRead(HUM_PIN);
  // Если значение показателя не равно предыдущему, то...
  if(humNow != hum) {
    //Сохраняем полученные сейчас значение
    hum= humNow;
    //Вывод значения на экран
    displayInt(humNow);
  }
//Задаем условия: если прошел заданный пользователь промежуток времени и //статус влаги в почве меньше необходимого, то...
  if ((Time == 0 || millis() - Time > INTER) && hum < HUM_MIN ) {
    // Даем сигнал о начале работы водяной помпы
    digitalWrite(VODPOMPA_PIN, HIGH);
    //Объявляем потом, длящийся 2 секунды
    delay(2000);
    // Завершаем работу помпы
    digitalWrite(POMP_PIN, LOW);
    // Ставим в значение переменной Time текущее время и добавляем 3 минуты 
    Time = millis();
  }
}

Дополнительно вы можете посмотреть пару интересных видео от наших коллег:

https://youtube.com/watch?v=Z2xLD0P83rw

https://youtube.com/watch?v=nUHizmtyt74

На этом на сегодня всё. Отличных вам проектов!

Общие сведения об управляющих системах

Интеллектуальность современного оборудования обеспечивается микроконтроллерами. Это небольшие и ограниченные по ресурсам полноформатные компьютеры, зачастую размещенные на одной плате или микросхеме. Несмотря на свои маленькие размеры их мощности вполне достаточно для того, чтобы управлять различным оборудованием. Информацию, необходимую для выполнения своих функций, такие микрокомпьютеры получают посредством различных специализированных датчиков. Общее нахождение устройств в единой сети обеспечивается посредством дополнительных присоединяемых к микроконтроллеру модулей.

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

Основой многих из подобных комплексов составляют контроллеры серии Arduino, STM, Ti MSP430, Netduino, Teensy, Particle Photon, ESP8266 или иных распространенных плат такого типа в мире. Кроме того, некоторые специалисты создают свои варианты микро — компьютеров, управляющих оборудованием — на основе устаревших ПК или каких-либо 8 разрядных процессоров, к примеру, Z80.

Дополнительные улучшения системы

Когда автополив для комнатных растений будет настроен и готов к работе, следует воспользоваться следующими рекомендациями:

Хотя контакты датчика влажности позолочены, по мере эксплуатации они повергаются коррозии. Наиболее интенсивное коррозирование происходит во время подключенного напряжения. Однако срок эксплуатации сенсора возможно продлить в несколько раз, подключив в нему напряжение посредством силового ключа. Если требуется снять показатели — на датчик поступает питание, затем значения сохраняются и питание сразу же выключается.
Бывают ситуации, когда ирригатор работает продолжительное время, никто за ним не присматривает, а в емкости заканчивается вода. Если насос работает вхолостую, возникает высокая вероятность его поломки. Проблему можно решить, если настроить автораспознавание отсутствия воды в емкости.
Выбирать датчик следует с учетом типа емкости. Если она не слишком глубокая, его одного будет достаточно. Если высоты оказывается недостаточно, подойдет ультразвуковой дальномер, оснастив его поплавком с прикрепленным сенсором наклона. Можно просто положить на дно резервуара 2 провода.
Безопасность автополивщика, который питается через батарейки, намного выше по сравнению с работающим от сети. В идеале будет обеспечить напряжение от батареек, однако потребление Arduino Uno даже в спящем режиме выше 0.36мА

Как вариант, стоит обратить внимание на плату Arduino Mini, которая в спящем режиме умеет снижать свое потребление энергии до нескольких сотен мкА.
При поливе комнатной растительности следует учитывать множество правил и рекомендаций. Например, их нельзя поливать зимними вечерами

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

Процесс сборки

Чтобы получить в распоряжение готовый для настройки ирригатор, потребуется выполнить следующие действия:

  • Первоначально установить плату Troyka Shield на Arduino Uno.
  • К пину A0 через Troyka Shield подключается сенсор определения влажности;
  • Также посредством Troyka Shiled к основной платке подключается дисплей. Здесь пин CS нужно соединить с 9-ым пином Troyka Shield, а к соответствующему выходу на Troyka Shield цепляем SPI пины дисплея.
  • Силовой ключ присоединяем к четвертому контакту.
  • Затем к силовому ключу подводим коммутирующее напряжение через разъем с подписями P+ и P–.
  • Водяной насос подключается к силовому ключе через пины L+ и L−.

    В результате наша небольшая схема готова и должна выглядеть так:

  • Теперь щуп датчика влажности втыкаем в почву с уже посаженным в нем растением.
  • Конец шланга тоже помещается в почву. Если вес горшка меньше 2 кг, желательно дополнительно трубку укрепить. Это исключит риск опрокинуть горшок с нашим растением.
  • Последним шагом опускаем насос в резервуар с водой и запитываем нашу схему.

Теперь ирригатор собран и потребуется провести его дополнительную настройку.

https://youtube.com/watch?v=R7ILpfYvDNc

https://youtube.com/watch?v=unrufP_7y18

https://youtube.com/watch?v=zV0Yx5-yNdw

Насос для автомата полива растений

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

Важно: прежде чем подключать насос к готовому устройству, проверьте его в работе. Автомобильный насос может выдать фонтан в несколько метров; дома такое «поливание» могут не понять и запретить на корню

Подберите опытным путем оптимальное напряжение. Автонасос рассчитан на питание от бортовой сети 12 В, на моем экземпляре достаточный напор появляется уже при напряжении 8…9 В. Насос от принтера напора в несколько метров не даст, но с ним другая проблема: в принтере он качал чернила, а они очень трудно отмываются, и такой насос аккуратнейшим образом необходимо будет промыть.

Чего бы хотелось

Наибольшее желание любого огородника — получать максимальный урожай при минимальных затратах труда. Одним из вариантов решения этой проблемы становятся теплицы. Но и в таком случае хочется, чтобы в ней самостоятельно грядки поливались, освещались, и обогревались, когда нужно. Ну и конечно, была организована автоматическая система вентиляции, для минимизации усилий по открыванию и закрыванию форточек.

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

Мониторинг и настройка

Конечно, в первую очередь, требуется система управления всем этим высокоинтеллектуальным хозяйством. Кроме того, желательно получение информации о текущем состоянии напрямую или на домашний компьютер, или на смартфон. С этой целью будет использоваться контроллер для теплицы на Arduino.

Управление

В соответствии с желаниями, необходимо организовать автоматическое управление отоплением пола (как основы подогрева посадок), открытия форточек, увлажнением почвы. Хороша будет система контроля освещения, которая зажигает его, если на улице темно.

Логика:

Данное устройство позволит вам организовать полностью автоматический режим работы вашей теплицы или гроу-бокса (на случай, если вы выращиваете овощи/фрукты зимой в домашних условиях). Система позволяет управлять сразу 3 важными параметрами: освещение, температура, орошение.

Логика довольна проста:

  • Датчик освещённости фиксирует количество света, попадающего на растение и при понижении его ниже критической отметки — включает дополнительное освещение;
  • Датчики влажности и температуры фиксируют влажность и температуру как воздуха, так и земли, благодаря чему вовремя происходит проветривание или закрытие теплицы, дабы урожай не вымерз и не сгорел;
  • Наличие модуля часов реального времени позволит задать точное время дня (или ночи), когда насос будет подавать воду к растению. При этом длительность полива тоже можно задать!
  • И дополнением к данной системе станет наш GSM/GPRS Shield, благодаря которому вы сможете как следить за состоянием вашего зелёного друга, так и вовремя задать требуемый режим или выполнить команду просто отправив смс на устройство;

Следуя инструкциям нашего урока в скором времени вы сможете обзавестить своей собственной «умной теплицей», которая будет радовать вас круглый год!

Необходимые компоненты

  1. Реле на 12v.
  2. Источник питания 12v 1A.
  3. Соединительные провода и концевой соединитель.

GSM модуль

В этом проекте мы использовали TTL SIM800 GSM модуль. SIM800 представляет собой четырех диапазонный GSM/GPRS модуль, способен работать в диапазонах частот 850/900/1800/1900 МГц и обеспечивать передачу голоса, SMS, данных с низким энергопотреблением. Внешний вид SIM800 показан на рисунке ниже – он достаточно компактный и не займет много места в ваших устройствах. Модуль SIM800 включает:

  • четырех диапазонный GSM/GPRS модуль компактного размера;
  • возможность задействования GPRS;
  • выход TTL.

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

Что ещё можно сделать?

  1. Несмотря на золочение, контакты сенсора влажности со временем корродируют. Быстрее всего корродирование происходит при подключённом питании. Срок жизни сенсора можно значительно увеличить, если подключить питание к нему через силовой ключ. Когда надо получить данные — включаем питание сенсора, снимаем показания и тут же выключаем питание.
  2. Если оставить наш ирригатор работающим на длительный срок без присмотра, вода в резервуаре может закончиться. При работе без воды помпа быстро выходит из строя. Решением проблемы может быть автоматическое определение опустошения резервуара. Сенсор подбирается исходя из типа резервуара. Если он не глубок, то подойдёт ещё один датчик влажности. Когда же высоты его не хватает, можно воспользоваться УЗ-дальномером, сделать поплавок с датчиком наклона или просто опустить на дно два провода.
  3. Устройство, работающее от батареек, будет значительно безопасней питающегося от сети. Идеальным вариантом было бы питание ирригатора от батареек. Но Arduino Uno, как известно, даже в режиме сна потребляет более 10 мА. Выходом может являться использование Arduino Mini, способный в режиме сна снижать потребляемый ток до сотен мкА.
  4. Существует много правил полива домашних растений, как, например: не стоит поливать зимой вечером. Можно добавить сенсоров света или часы реального времени и скорректировать программу так, чтобы она старалась поливать в нужное время.

А ещё можно собрать автополив на Slot Shield — инструкция по сборке и прошивка.