Умная теплица DasFilisera: система мониторинга роста растений на Arduino MKR1000
Компоненты и материалы
| Компонент | Количество | Примечание |
|---|---|---|
| Датчик температуры DHT22 | 1 | Влажность и температура внутри теплицы (пін D0) |
| Датчик температуры DS18B20 (влагозащищённый) | 1 | Температура снаружи (пін D1) |
| Датчик почвы FS200-SHT25 (темп. + влажность) | 1 | I2C: SCL=12, SDA=11 |
| 4-канальный релейный модуль | 1 | Управление клапанами полива (R1, пины 7–10) |
| 2-канальный релейный модуль | 1 | Управление вентиляцией/окнами (R2, пины 5–6) |
| Ультразвуковой датчик HC-SR04 | 1 | Уровень воды: Echo=A0, Trig=A1 |
| Arduino MKR1000 | 1 | WiFi + aREST API |
Приложения и онлайн-сервисы
- DasData — облачное хранение и визуализация данных теплицы
- Microsoft Visual Studio 2015 — Windows-приложение для локального мониторинга и графиков
О проекте
Выращивайте растения и овощи, полностью контролируя условия среды. Всё, что нужно — Arduino MKR1000.

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

Температура / Влажность
- TH1 — внешняя температура: DS18B20 (пін D1)
- TH2 — внутренняя температура/влажность: DHT22 (пін D0)
- TH3 — почвенные условия: FS200/SHT25 (I2C пины 12/11)
Уровень воды
- W1 — ультразвуковой датчик HC-SR04 (Echo A0, Trig A1). На основе показаний управляется клапан через 4-канальное реле R1.
Воздух: температура / кислород
- A1 — исходя из температуры/влажности открываются окна через реле R2. Пороги настраиваются под климат.
Реле R1 / R2
R1 (4 канала) — пины 7,8,9,10; R2 (2 канала) — пины 5,6. Команды отправляются через aREST API.

MKR1000 + aREST
Все датчики подключены, данные доступны через веб-интерфейс aREST в JSON. Используйте предоставленные библиотеки и .ino-файлы, настройте SSID/пароль WiFi.

Данные и интерфейс
Написано Windows-приложение (C#, .NET, Visual Studio 2015) для визуализации текущих параметров, истории за день и логов. Данные также отправляются в облако DasData (или свои каналы).






В файле Settings.txt приложения укажите DsKey и AKey от DasData. После запуска данные появятся в облаке.

Автоматизация теплицы
Выбирайте клапаны и приводы под свою теплицу. Всё управляется через реле. Логика триггеров (полив при низком уровне, вентиляция при высокой температуре) реализована в Windows-приложении.
Программный код
Filisera_Arduino— скетч для MKR1000 (aREST, WiFi101, DHT, OneWire, DallasTemperature, SHT2x)libraries.zip— необходимые библиотекиFilisera - vb.zip/Filisera - VS— проект Visual Studio (C#)
Filisera_Arduino (основные фрагменты)
#include <SPI.h>
#include <WiFi101.h>
#include <aREST.h>
#include "DHT.h"
#include <OneWire.h>
#include <Wire.h>
#include <DallasTemperature.h>
#include <SHT2x.h>
#define DHTPIN 0
#define DHTTYPE DHT22
#define ONE_WIRE_BUS 1
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float umidSol=0, umidAer=0, tempIn=0, tempOut=0, tempSol=0, umidexIn=0;
#define echoPin A0
#define trigPin A1
long duration; int HR_dist=0;
int minimumRange=5, maximumRange=200;
int sqrLevel, nivelProc, nivelVol;
char ssid[] = "WIFI_AP";
char password[] = "WIFI_PASSW";
#define LISTEN_PORT 80
WiFiServer server(LISTEN_PORT);
aREST rest = aREST();
void setup() {
Serial.begin(115200);
rest.function("led", ledControl);
rest.set_id("1"); rest.set_name("mkr1000");
while (WiFi.begin(ssid, password) != WL_CONNECTED) delay(10000);
server.begin();
rest.variable("Vol_container", &sqrLevel);
rest.variable("Umiditate_sol", &umidSol);
rest.variable("Umiditate_aer", &umidAer);
rest.variable("Temp_in", &tempIn);
rest.variable("Temp_out", &tempOut);
rest.variable("Temp_sol", &tempSol);
pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT);
}
void loop() {
getmyDistance(); getInsideVals(); getOutSideVals(); getSoilVals();
WiFiClient client = server.available();
if (client) rest.handle(client);
}
// ... функции опроса датчиков, ультразвука, реле ...
Windows-приложение (Form1.cs — ключевые моменты)
- Чтение настроек из
Settings.txt(IP устройства, ключи DasData, пины реле) - Периодический опрос aREST API (каждые 5 сек) и отображение на графиках (Chart.js / WinForms Charting)
- Ручное управление реле через кнопки интерфейса (HTTP GET на
/digital/<pin>/<val>) - Автоматические триггеры: полив при уровне <10% / >80%, вентиляция при t>38°C / <10°C
- Логирование событий в DasData и локальный ListBox
- Загрузка истории за выбранную дату из DasData (JSON → DataSet → Charts)
Схемы
PDF-файл с подключением датчиков и реле (см. раздел Schematics).
Исходники на GitHub
https://github.com/dasdata/DasFilisera
Производственный процесс
- Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
- Подключение нескольких DS18B20 1-Wire датчиков к Raspberry Pi для точного мониторинга температуры
- ИК-датчик температуры TMP006 с Raspberry Pi: библиотека Python и руководство по настройке
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Как подключить однопроводный датчик температуры DS1820 к Raspberry Pi через GPIO
- Подключение цифрового термометра DS18B20 1-Wire к Raspberry Pi — пошаговое руководство
- Создание многодатчиковой системы мониторинга температуры и света с Raspberry Pi и DS18B20
- Создайте домашний монитор температуры на Raspberry Pi с MCP9808, InfluxDB и Grafana
- Точный датчик температуры подшипников: обнаружение и мониторинг
- Лабораторный чип NASA Goddard обеспечивает мониторинг потока и температуры в реальном времени