DIY умная теплица GIY: ATmega32U4, ESP8266, сенсоры, 3D-печать, CNC, вакуумное формование
Концепция проекта
GIY (Grow It Yourself) — полностью открытая автономная система для выращивания растений (аэропоника/фогпоника) с контролем климата, освещения, питания и удалённым мониторингом. Вдохновлено TED-током Калеба هارпера (MIT OpenAg).
Ключевые подсистемы
- Свет: RGB-лента (450 нм + 650 нм) для вегетации и цветения.
- Орошение: Ультразвуковой атомайзер (туман с удобрениями) — аэропоника.
- Дозирование: Автоматическая подача нутриентов.
- Водный бак: pH, TDS, уровень воды, температура воды (DS18B20).
- Климат: DHT11 (влажность/температура воздуха), вентилятор + ТЭН.
- Освещённость: Фоторезистор (LDR).
- Дисплей: Графический LCD 128×64 (3 пина через ST7920).
- Управление: 4 MOSFET-канала (12 В и 24 В через step-up).
- Связь: ESP8266 (Wi-Fi) + ATmega32U4 (USB, совместим с Leonardo).
- Мобильное приложение: Планируется (графики, алерты, управление).
Эксперименты с выращиванием
Сравнивались 4 группы: почва/солнце, туман/солнце, почва/LED, туман/LED (HERO). Семена прорастали в кокосовой субстрате, затем переносились в минеральную вату (Rock Wool) — лучшая среда для фогпоники. Пасхальный перерыв убил первую партию; вторая дала лучшие результаты.
Электроника: проектирование платы (EAGLE)
База — FabLeo (ATmega32U4, 16 МГц, кварц, USB). Добавлено:
- 4 MOSFET-канала (3×12В, 1×24В через step-up)
- Стабилизатор 12В→5В
- Разъёмы для DHT11, DS18B20, LDR, pH, уровень воды
- SPI/I2C для LCD, ISP для прошивки
- Двухслойная плата, полигон GND
Фрезеровка на Roland (FabModules), пайка под микроскопом, исправление короткого замыкания VCC-GND.
Программирование сенсоров
DHT11
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() { Serial.begin(9600); dht.begin(); }
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("Temp = "); Serial.println(t, 2);
Serial.print("Hum = "); Serial.println(h, 2);
delay(2000);
}
DS18B20 (1-Wire)
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() { Serial.begin(9600); sensors.begin(); }
void loop() {
sensors.requestTemperatures();
Serial.print("Water Temp: "); Serial.println(sensors.getTempCByIndex(0));
delay(1000);
}
LDR (освещённость)
int sensorPin = A0;
void setup() { Serial.begin(9600); }
void loop() {
int v = analogRead(sensorPin);
Serial.print("LDR: "); Serial.print(v);
if (v < 100) Serial.println(" Dark");
else if (v < 200) Serial.println(" Dim");
else if (v < 500) Serial.println(" Light");
else if (v < 800) Serial.println(" Bright");
else Serial.println(" Very bright");
delay(3000);
}
Уровень воды (на базе датчика влаги почвы)
Аналоговый вход A4: 0 — пусто, ~800 — низкий, >900 — полный.
LCD 128×64 (U8glib, 3 пина: 4, 12, 6)
Вывод параметров + логотип FabLab (битмап, конвертирован через LCD Assistant).
pH-сенсор (v1.1, BNC)
Калибровка: замыкание BNC → регулировка offset на 2.5 В (pH 7.0). Буфер pH 4.01 → измерение напряжения → расчёт шага (0.18 В/pH). Формула: pH = 7 + (2.5 - V) / 0.18.
Итоговый скетч (основной)
#include "dht.h"
#include "U8glib.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#define DHT11_PIN 2
#define ONE_WIRE_BUS 3
#define WATER_LEVEL A4
#define LDR_PIN A3
#define PH_PIN A5
#define GROW_LIGHT 10
#define FOG_PUMP 13
// ... инициализация объектов, логотип в PROGMEM ...
void RefreshDisplay(float *hum, double *T, int *WL, int *LL, int *pH_val) {
// вывод на LCD: Hum%, Temp, Wlvl (EMPTY/LOW/HIGH + управление FOG_PUMP),
// Light (Dark..2Bright), pH (расчёт по формуле)
}
void loop() {
waterTemp.requestTemperatures();
T = waterTemp.getTempCByIndex(0);
waterLevel = analogRead(WATER_LEVEL);
LightLevel = analogRead(LDR_PIN);
pH = analogRead(PH_PIN);
hum = DHT.humidity;
// обновление дисплея через u8g.firstPage/nextPage
}
3D-печать (BigRep + Ultimaker 2+)
- Водный контейнер с гнездом для атомайзера, проходами кабелей, креплением дисплея, ручками, слайдерами.
- Сетчатые горшки (net pots) с увеличенными отверстиями для корней и тумана.
- Нижняя база, круглые углы верхней крышки.
- Пластик PLA, Simplify3D, эксперименты с поддержками и заполнением.
Лазерная резка (акрил 5 мм)
- Зелёный акрил — внутренние панели (органичный вид).
- Белый — передняя/задняя крышки (отверстия под LCD и доступ к USB).
- Прозрачный — верхняя крышка (проход света, крепление RGB-ленты).
- Станок Epilog Fusion 60W, файлы DXF из Fusion 360.
CNC-фрезеровка (e-sign Easy Worker MasterPro 2513)
- Материал: фанера 18 мм (стены), 10 мм (форма для вакуумного формования).
- Гравировка + внешний контур, G-code из DXF.
Вакуумное формование (Formech)
Водонепроницаемый вкладыш для контейнера: 2-слойная заливка (скользящий первый слой + силикон) для легкого снятия формы. Результат — герметичный бак.
Сборка и результат
Механическая сборка, пайка RGB-лент, монтаж платы, подключение сенсоров. Система GIY полностью собрана, функциональна и демонстрирует работу всех подсистем.
Файлы проекта
- Схемы и плата (EAGLE .sch/.brd)
- PNG для фрезеровки (внутренние/внешние контуры, верх/низ)
- 3D-модели (Fusion 360 .f3d): система, нет-пот
- DXF для лазера: фасады, держатели растений, свет
- Итоговый код (.ino)
Лицензия: CC BY-NC-SA 4.0. Оригинал: Fab Academy 2017.
Производственный процесс
- Визитка-PCB с игрой «Крестики-нолики» 4×4: руководство по проектированию, сборке и программированию
- Многопозиционная система датчиков температуры для интеграции в умный дом
- DIY-контроллер паяльника 862D+ — точность и надёжность
- MotionSense: умная система обнаружения проникновения на Arduino и ESP8266
- Пожарная безопасность 3D-принтера: умная система обнаружения дыма
- Веб-управляемый IoT-индикатор на Arduino, Yaler и IFTTT
- Магнитная левитация на отталкивании с Arduino: Простая схема и DIY-руководство
- Продвинутый дистанционно управляемый манипулятор-робот для точной работы
- Высокопроизводительный регистратор данных для метеозонда на Arduino
- CoroFence: термический детектор на GridEye + PIR с IoT