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

Умная гидропонная система на Arduino Mega 2560 с датчиками

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

Приложения и сервисы

О проекте

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

Параметры для салата (модель проекта)

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

Управление светом

Используется массив из 16 светодиодов 3 мм (8 красных + 8 синих), соединенных в 4 ряда по 4 последовательно. Каждый ряд требует 12В. Управление осуществляется через оптопару 4N35. Интенсивность света измеряется фоторезистором (LDR), показания пересчитываются в фотоны/сек в коде Arduino.

Управление температурой

Для поддержания температуры используются:

Управление влажностью

Влажность субстрата (какао-порошка) измеряется датчиком DHT11 (используется только для влажности). Для увлажнения применяется капельное орошение: насос с трубкой, в которой сделаны отверстия.

Важные замечания

Программный код

Код для Arduino Mega использует библиотеку SimpleDHT. Основные функции:

#include <SimpleDHT.h>
int pinDHT11 = 41;
int coolingFan = 50;
int heatingFan = 48;
int heater = 3;
int LEDrow1 = 25;
int LEDrow2 = 27;
int LEDrow3 = 29;
int LEDrow4 = 31;
int pump = 31; // Внимание: конфликт с LEDrow4!
SimpleDHT11 dht11;

void setup() {
  Serial.begin(115200);
  pinMode(coolingFan, OUTPUT);
  pinMode(heatingFan, OUTPUT);
  pinMode(heater, OUTPUT);
  pinMode(LEDrow1, OUTPUT);
  pinMode(LEDrow2, OUTPUT);
  pinMode(LEDrow3, OUTPUT);
  pinMode(LEDrow4, OUTPUT);
  pinMode(pump, OUTPUT);
}

void loop() {
  temperature();
  light();
  humidity();
}

void temperature() {
  int value = analogRead(A10);
  float volts = (value / 1024.0) * 5.0;
  float temp = volts * 100.0;
  Serial.print("temp=");
  Serial.println(temp);
  delay(1000);
  
  if (temp < 25) {
    digitalWrite(heater, LOW);
    digitalWrite(heatingFan, HIGH);
  } else {
    digitalWrite(heater, HIGH);
    digitalWrite(heatingFan, LOW);
  }
  if (temp > 30) {
    digitalWrite(coolingFan, HIGH);
  } else {
    digitalWrite(coolingFan, LOW);
  }
}

void light() {
  float ldrdata = analogRead(A8);
  float resistorVolt = (1024 - ldrdata) / 1024.0 * 5.0;
  float ldrVolt = 5.0 - resistorVolt;
  float ldrResistance = ldrVolt / resistorVolt * 5000.0;
  float lux = (12518931) * pow(ldrResistance, -1.405);
  float photons = lux * 0.019;
  delay(1000);
  
  if (photons < 50) {
    digitalWrite(LEDrow1, HIGH);
    digitalWrite(LEDrow2, HIGH);
    digitalWrite(LEDrow3, HIGH);
    digitalWrite(LEDrow1, HIGH); // Дубликат?
  }
  if (photons > 100) {
    digitalWrite(LEDrow1, LOW);
    digitalWrite(LEDrow2, LOW);
    digitalWrite(LEDrow3, LOW);
    digitalWrite(LEDrow4, LOW);
  }
}

void humidity() {
  byte temperature = 0;
  byte humidity = 0;
  int err = SimpleDHTErrSuccess;
  if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
    Serial.println(err);
    delay(1000);
    return;
  }
  int humid = (int)humidity;
  Serial.println(" H");
  delay(2000);
  
  if (humid < 85) {
    digitalWrite(pump, HIGH);
    digitalWrite(coolingFan, LOW);
  }
  if (humid > 94) {
    digitalWrite(coolingFan, HIGH);
    digitalWrite(pump, LOW);
  }
}

Примечание: В коде есть конфликт: пин 31 используется и для LEDrow4, и для pump. Это нужно исправить при сборке.

Схемы

В проекте представлена схема подключения (изображение в оригинале).

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

  1. Удобрения: наука, производство и устойчивое будущее
  2. Датчики влажности почвы: принцип работы и практические применения
  3. Понимание кислородного (O2) датчика: роль, размещение и признаки отказа
  4. Управление светодиодом с PIR-датчиком движения на Raspberry Pi
  5. Построение низкобюджетного датчика влажности почвы на Raspberry Pi для умного полива
  6. Тестирование датчика температуры DS18B20 на Raspberry Pi
  7. Создайте домашний монитор температуры на Raspberry Pi с MCP9808, InfluxDB и Grafana
  8. Sensor Telemetry 2.0.1 — продвинутый мониторинг температуры с Azure IoT Hub
  9. Датчик эмоций и ЭЭГ: низкобюджетное железо для детекции эмоций в реальном времени
  10. Датчики Холла: принцип работы, применение и конструкция