Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Умный автоматизированный домашний сад на Arduino — Система ухода за растениями

Компоненты и материалы

О проекте

Умный автоматизированный домашний сад на Arduino — Система ухода за растениями

Проект реализует упрощённую систему автоматизированного домашнего сада на базе Arduino. Устройство контролирует три ключевых параметра: свет, воду и воздух. Сборка заняла 7 дней: 3 дня — железо и пайка, 4 дня — код и Android-приложение для Bluetooth-управления.

Что вы узнаете

Основные потребности растений

Умный автоматизированный домашний сад на Arduino — Система ухода за растениями
Умный автоматизированный домашний сад на Arduino — Система ухода за растениями

Датчики и исполнительные механизмы

Датчики

Исполнительные механизмы

Печатная плата (JLCPCB)

Плата заказана на JLCPCB — крупнейшем китайском прототипировщике. Цена ~$2 за 5 шт., доставка 3 дня. Качество отличное: форма листа, все надписи и логотипы чёткие, что исключает ошибки пайки.

Умный автоматизированный домашний сад на Arduino — Система ухода за растениями
Умный автоматизированный домашний сад на Arduino — Система ухода за растениями
Умный автоматизированный домашний сад на Arduino — Система ухода за растениями
Умный автоматизированный домашний сад на Arduino — Система ухода за растениями

Сборка

Пайка по надписям на плате. Рекомендуется проверять каждый узел тестовым скетчем сразу после установки. Используйте чистый паяльник — это залог качественных соединений.

Умный автоматизированный домашний сад на Arduino — Система ухода за растениями
Умный автоматизированный домашний сад на Arduino — Система ухода за растениями
Умный автоматизированный домашний сад на Arduino — Система ухода за растениями
Умный автоматизированный домашний сад на Arduino — Система ухода за растениями
Умный автоматизированный домашний сад на Arduino — Система ухода за растениями
Умный автоматизированный домашний сад на Arduino — Система ухода за растениями

Корпус выполнен из МДФ 5 мм лазерной резкой (DXF-файлы прилагаются).

Android-приложение

Приложение подключается по Bluetooth, позволяет в ручном режиме включать/выключать вентилятор, свет, насос, и запрашивать показания датчиков кнопкой «Get Data». В автоматическом режиме система сама регулирует яркость света по BH1750, полив по датчику почвы и вентилятор по температуре.

Умный автоматизированный домашний сад на Arduino — Система ухода за растениями
Умный автоматизированный домашний сад на Arduino — Система ухода за растениями
Умный автоматизированный домашний сад на Arduino — Система ухода за растениями

Код Arduino (основные фрагменты)

#include "DHT.h"
#include 
#include 

const int Pump = 4;
const int Fan = 5;      // PWM
const int Light = 6;    // PWM
const int TempHum = 7;  // DHT11
const int Moisture = 8; // Digital входа датчика влажности
const int TestLED = 9;
const int Brightness = 12;
const int analogMoistue = A0;

#define DHTTYPE DHT11
DHT dht(TempHum, DHTTYPE);
BH1750 lightMeter;

char Data = 'x';
String cmd = "";
int flagModeAuto = 0;
int sprayCMD = 0;   // порог влажности для полива
int LightCMD = 0;   // порог освещённости
int lightLevelPlus = 0;
float temperature = 0, humidity = 0;
uint16_t lux = 0;

void setup() {
  Wire.begin();
  dht.begin();
  lightMeter.begin();
  Serial.begin(9600);
  Serial.setTimeout(100);
  pinMode(Pump, OUTPUT);
  pinMode(Fan, OUTPUT);
  pinMode(Light, OUTPUT);
  pinMode(Moisture, INPUT);
  pinMode(TestLED, INPUT);
  delay(1000);
  digitalWrite(Pump, LOW);
  digitalWrite(Fan, LOW);
  digitalWrite(Light, LOW);
}

void loop() {
  while (Serial.available()) {
    delay(10);
    Data = Serial.read();
    cmd += Data;
  }
  // Команды от приложения: "o" - авто, "m" - ручной, "f/x" - вент, "l/k" - свет, "w/y" - насос
  // Запросы данных: "dt" - влажность, "dh" - свет, "db" - температура
  if (cmd == "o") flagModeAuto = 1;
  if (cmd == "m") flagModeAuto = 0;

  if (flagModeAuto) {
    autoPump();
    lightBrightness();
    autoFan();
  } else {
    // ручное управление
    if (cmd == "f") analogWrite(Fan, 255);
    if (cmd == "x") analogWrite(Fan, 0);
    if (cmd == "l") analogWrite(Light, 255);
    if (cmd == "k") analogWrite(Light, 0);
    if (cmd == "w") analogWrite(Pump, 255);
    if (cmd == "y") analogWrite(Pump, 0);
  }

  if (cmd == "dt") Serial.print(humidity);
  if (cmd == "dh") Serial.print(lux);
  if (cmd == "db") Serial.print(temperature);

  cmd = "";
  lux = lightMeter.readLightLevel();
  temperature = dht.readTemperature();
  humidity = dht.readHumidity();
}

void autoPump() {
  if (analogRead(analogMoistue) < sprayCMD) {
    digitalWrite(Pump, HIGH);
    delay(1000);
    digitalWrite(Pump, LOW);
    delay(1000);
  }
}

void lightBrightness() {
  while (lux < LightCMD) {
    analogWrite(Light, lightLevelPlus);
    delay(100);
    lightLevelPlus++;
    lux = lightMeter.readLightLevel();
  }
}

void autoFan() {
  if (temperature > 30) analogWrite(Fan, 255);
  else analogWrite(Fan, 0);
}

Полный код и файлы для заказа PCB (Gerber) и резки корпуса (DXF) доступны в репозитории проекта.

Производственный процесс

  1. Создание потрясающей системы Ambilight для монитора на Arduino
  2. Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
  3. Детектор аудиочастот на Arduino: измеряем пик громкости с высокочувствительным модулем
  4. Собираем свой Tamagotchi на Arduino: цифровой питомец своими руками
  5. Умный беспроводной выключатель света: Arduino-контроллер для удаленного управления
  6. Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
  7. Умный водяной пистолет с датчиком движения на Arduino Nano
  8. Сборка надежного таймера обратного отсчета на Arduino с 7-сегментным дисплеем SparkFun
  9. Arduino Sunflower: электронный подсолнух, следящий за солнцем
  10. Набор для создания робота с умной внутренней навигацией на базе Arduino