Открытая платформа для создания заботливой квартиры

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

Если вы просто так посадите семена, разместите горшок на подоконнике и будете аккуаратно поливать, то скорее всего у вас почти ничего не вырастет. Причина этому - недостаточное количество света. Особенно в средней полосе, где пасмурных дней очень много.

Фокус заключается в досветке растений светодиодными светильниками. Они достаточно эффективны и не повлияют существенно на стоимость расходов за электроэнергию.

Домашний огород своими руками на Arduino

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

Конструкция

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

В качестве каркаса можно использовать:

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

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

На нижней стороне полок разместите светильники из расчета не менее 2000 люменов (Лм) на один горшок длинной 60 см. Вы можете использовать:

  • Линейные светодиодные светильники по 1000 Лм, без рассеивателя;
  • Обычные бытовые светодиодные лампы по 1000 Лм, предварительно удалив у них пластиковый кожух (рассеиватель).

Соедините параллельно все светильники при помощи клемм, аккуратно проложив провод по каркасу.

Автоматизация

  • Включение освещения утром и отключение вечером;
  • Измерение уровня влажности почвы в ящиках с растениями;
  • Автоматический полив почвы при достижении пороговых значений влажности.

Для решения этих задач вам потребуются следующие элементы:

Название Назначение Цена, руб.
BLE JDY-08 Радиомодуль Bluetooth LE, если заботу об огороде вы возложите на контроллер Home Assistant 140
Arduino Pro Mini Микроконтроллер для управления автоматизацией 135
YL-38 Датчик влажности почвы 3 x 40
Помпа DC 3-6v 120L/H Помпа для полива 3 x 85
Hi-Link HLK PM-01 5V Изолированный модуль питания 5В 150
G3MB-202P DC-AC 5V Твердотельное реле 56
ACS712 Модуль измерения силы тока в цепи, для организации обратной связи при управлении через Home Assistant 90

Еще вам потребуется три маломощных транзистора (например, BC327), три резистора на 10 КОм, соединительные провода и макетная плата 7x9см.

Программируем

О том как настроить Arduino IDE и подключить микроконтроллер к ПК читайте в этой коротенькой инструкции. Для компиляции программы необходимо загрузить библиотеки и добавить их в Arduino IDE через меню Sketch - Install library:

#include <jdy8.h>
#include <LowPower.h>
#include <ACSensor.h>

#define BOX_NUMBER 3
#define SENSOR_VCC_PIN 12
#define AC_SENSOR_PIN A3
#define WAIT_SECONDS 600 // send data every 10 mins
#define WATERING_SECONDS 20 // how long watering a box

JDY8 ble(11, 4, 10); // RX, TX, Reset
ACSensor currentSensor(AC_SENSOR_PIN, 185.0, 21.0); // sensor pin, ACS sensitivity (mV/A), ACS noise level (mV)

int sensorPins[] = {A0, A1, A2}; // moisture, moisture2, moisture3
int blePins[] = {5, 2, 3};
int pumpPins[] = {13, 9, 8};
int secondsPassed = WAIT_SECONDS;
int currentValue = 0;

void setup() 
{
  currentSensor.calibrate();
  ble.configure("Garden-1");
}

void loop() 
{
  // measure AC sensor
  unsigned int value = currentSensor.getWatt();
  if ( value != currentValue ) {
    currentValue = value;
    ble.major(value);
  }

  // read moisture sensors
  if ( secondsPassed >= WAIT_SECONDS ) {
    secondsPassed = 0;
    pinMode(SENSOR_VCC_PIN, OUTPUT);
    digitalWrite(SENSOR_VCC_PIN, HIGH);
    delay(200);
    ble.setData(
      100 - (short) (((float) analogRead(sensorPins[2]) / 1024) * 100),
      currentSensor.getWatt(),
      100 - (short) (((float) analogRead(sensorPins[0]) / 1024) * 100),
      100 - (short) (((float) analogRead(sensorPins[1]) / 1024) * 100)
    );
    digitalWrite(SENSOR_VCC_PIN, LOW);
  }

  // control water pumps
  for( int i = 0; i < BOX_NUMBER; i++ ) {
    pinMode(blePins[i], INPUT);
    if ( digitalRead(blePins[i]) == HIGH ) {
      // reset IO pin
      ble.setIOPin(i + 1, 0);
      // water a box
      digitalWrite(pumpPins[i], HIGH);
      delay(WATERING_SECONDS * 1000);
      digitalWrite(pumpPins[i], LOW);
    }
  }

  LowPower.powerDown(SLEEP_1S, ADC_OFF, BOD_OFF);
  secondsPassed += 1;
}

Собираем по схеме

Схема домашнего огорода своими руками на Arduino

Посадка растений

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

Запуск огорода

Устройство полива состоит из резервуара с водой, помпы и трубки от капельницы. Капельница продается в любой аптеке и стоит около 15 рублей, вам нужно купить 3 штуки.

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

Домашний огород своими руками на Arduino

В капельнице по всей длине той части, что будет размещаться в ящике, нужно проделать небольшие отверстия (1-2 мм в диаметре), через которые будет осуществляться полив. Отверстия не должны быть большими, но и через мелкие вода не будет проходить. Отверстия можно проделать щипчиками или маленькими ножницами. Расстояние между отверстиями - 3-4 см.

Установите датчики влажности в почву и проложите капельницу посередине вдоль ящика. Один конец капельницы (выход) подключите к помпе и разместите помпу в резервуаре с водой.

Все, ваш домашний огород готов!

Настраиваем HASS

Файл: /config/configuration.yaml

sensors:
  - platform: cutecare
    scan_interval: 60
    mac: 7C:01:0A:3A:12:37
    monitored_conditions:
      - moisture
      - moisture2
      - moisture3
    name: garden
    type: jdy8

light:
  - platform: cutecare
    mac: 7C:01:0A:3A:12:37
    name: garden_pump_1
    pin: 1
  - platform: cutecare
    mac: 7C:01:0A:3A:12:37
    name: garden_pump_2
    pin: 2
  - platform: cutecare
    mac: 7C:01:0A:3A:12:37
    name: garden_pump_3
    pin: 3

switch
  - platform: cutecare
    name: garden_light
    mac: 7C:01:0A:3A:12:37
    threshold: 5
    pin: 4

Файл: /config/automations.yaml

- alias: 'Turn On Garden Light'
  trigger:
    platform: time
    hours: 8
    minutes: '/10'
    seconds: 0
  condition: []
  action:
    service: homeassistant.turn_on
    entity_id: switch.garden_light

- alias: 'Turn Off Garden Light'
  trigger:
    platform: time
    hours: 20
    minutes: '/10'
    seconds: 0
  condition: []
  action:
    service: homeassistant.turn_off
    entity_id: switch.garden_light

- alias: 'Garden Box 1'
  trigger:
    platform: time
    minutes: 0
    seconds: 0
  condition:
    condition: numeric_state
    entity_id: sensor.garden_moisture
    above: 0
    below: 20
  action:
    service: homeassistant.turn_on
    entity_id: light.garden_pump_1

- alias: 'Garden Box 2'
  trigger:
    platform: time
    minutes: 0
    seconds: 0
  condition:
    condition: numeric_state
    entity_id: sensor.garden_moisture2
    above: 0
    below: 40
  action:
    service: homeassistant.turn_on
    entity_id: light.garden_pump_2

- alias: 'Garden Box 3'
  trigger:
    platform: time
    minutes: 0
    seconds: 0
  condition:
    condition: numeric_state
    entity_id: sensor.garden_moisture3
    above: 0
    below: 30
  action:
    service: homeassistant.turn_on
    entity_id: light.garden_pump_3

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

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

Домашний огород своими руками Arduino