Введение
Каждое лето проводя каникулы у бабушки с дедушкой, я наблюдаю как они целыми днями ухаживают за своими тремя большими теплицами. Они хотят каждый год получать хороший урожай помидоров, огурцов и баклажанов. Также дедушка каждый год садит арбузы, дыни, виноград, которые в нашем климате очень сложно выращивать. Я подумал, что с помощью современных средств можно облегчить им работу по выращиванию качественного урожая.
Гипотеза: Я предлагаю, что система мониторинга и автоматизации теплицы повлияет на всхожесть урожая, а также облегчит труд по ухаживанию за посадками.
Исходя из выше сказанного, я поставил цель – создать макет «умной теплицы».
В моей работе объектом исследования будет система мониторинга и автоматизации теплицы, а предмет исследования посаженные семена овса.
Задачи:
- изучить датчики для мониторинга параметров;
- изучить исполнительные механизмы;
- изучить платформу для автоматизации;
- разработать электрическую схему подключения датчиков и исполнительных механизмов;
- изучить программную среду разработки для выбранной платформы;
- написать программное обеспечение для дистанционного мониторинга основных параметров теплицы на мобильном приложении;
- провести сравнительный опыт выращивания семян овса в умной теплице и обычном парнике;
- сделать выводы;
Глава 1. Теоретическая часть. Платформа для создания проекта.
Изучая информацию в интернете, я понял, что в данный момент самая доступная и популярная платформа для разработки умных устройств и систем мониторинга является Arduino (рис 1).Arduino — это электронный конструктор и удобная платформа быстрой разработки электронных устройств для новичков и профессионалов. Платформа пользуется огромной популярностью во всем мире благодаря удобству и простоте языка программирования, а также открытой архитектуре и программному коду. Данная платформа была создана изначально для студентов для быстрого создания небольших проектов во время обучения в университете. Arduino-совместимые платы спроектированы таким образом, чтобы их можно было при необходимости расширять, добавляя в устройство новые компоненты. Эти платы расширений подключаются к Arduino посредством установленных на них штыревых разъёмов.
Язык программирования Arduino является стандартным C++ с некоторыми особенностями, облегчающими новичкам написание первой работающей программы.Программы, написанные программистом Arduino, называются скетчи.
Данная платформа производится многими компаниями по всему миру, что делает ее доступной для любого пользователя. Я приобрел данную платформу и все компоненты у китайского производителя на торговой площадке Aliexpress.
Часто эту платформу используют в кружках робототехники как в России, так и повсеместно.
Датчики
Для платформы Arduinoразработано очень много различных датчиков. Я использовал в своем проекте датчики (рис. 2):
DHT22 -2 шт.
DS18B20 - 2 шт.
Фоторезистор 1шт.
FS-28 – 1 шт.
Датчик DHT22 является универсальным датчиком температуры и влажности с диапазоном измерения по температуре -40°С … +80°С, погрешность ±0.5°С, диапазон измерения влажности: 0 … 100%, погрешность ±2%, выходной сигнал: цифровой.
Датчик DS18B20 является влагозащищенным датчиком температуры с диапазоном измерений от –55°C до +125°C и точностью 0.5°C. Каждый DS18B20 имеет уникальный 64-битный последовательный код, который позволяет, общаться смножеством датчиков DS18B20 установленных на одной шине.
Фоторезистор измеряет уровень освещенности. Диапазон чувствительности: чувствительные элементы фиксируют длины волн в диапазоне от 400 нм (фиолетовый) до 600 нм (оранжевый).
Датчик влажности почвы FS-28 позволяет получить конкретный уровень влажности по шкале от 0 (очень влажно) до 1023 (сухо). Погружается полностью в почву.
Исполнительные устройства
Для платформы Arduinoразработано очень много различных исполнительных устройств. Я использовал в своем проекте следующие исполнительные устройства (рис. 3):
- реле 10A – 1 шт.;
- электромагнитный клапан для воды - 1 шт.;
Реле предназначено для замыкания или размыкания электрической цепи. Данным реле можно управлять нагрузкой до силы тока в 10 Ампер.
Электромагнитный клапан позволяет подавать и перекрывать подачу воды для полива в теплицу из емкости. Работает от напряжения 12 В.
Беспроводные интерфейсы
На платформе Arduinoесть несколько беспроводных интерфейсов в виде отдельных подключаемых плат. Основным и часто используемым является модуль Wi-Fi связи (рис. 4). Он представлен в виде небольшой платы и позволяет подключить Arduinoк домашней сети Wi-Fi или подключиться с телефона к Arduinoплате.
В своем проекте я использовал модель модуля ESP8266.
Программное обеспечение
Платформа Arduinoпрограммируется с помощью своей фирменной бесплатной среды разработки ArduinoIDE. Язык программирования не сложный, что позволяет быстро написать любой проект. Программы созданные в этой среде называют скейтчи. Я использовал последнюю версию программы 1.8.2 с официального сайта. Программа подключается и загружает скейтчи в Arduinoс помощью USB кабеля.
Глава 2. Экспериментальная часть.
Для достижения поставленной цели я изготовил макет теплицы (рис. 5) и разработал систему мониторинга основных показателей окружающей среды и автоматизировал полив.
2.1. Изготовление макета теплицы
Каркас теплицы мною был изготовлен (рис. 6) из алюминиевого уголка, скрепленного заклепками. Стены и крыша были сделаны из акрилового прозрачного пластика. В работе использовались:
- ножовка по металлу;
- напильник;
- заклёпочник;
Размер теплицы:
- длина 30 см;
- высота 27 см (с крышей);
- ширина 20 см.
2.2. Схема мониторинга и автоматизации.
Я разработал схему мониторинга и автоматизации на основе датчиков температуры и влажности (рис. 7). Мною был установлен датчик температуры и влажности за пределами теплицы для определения температуры окружающей среды, также я установил датчики внутри теплицы для определения значений температуры в почве и воздуха. В почве также был установлен датчик влажности. Я установил в теплице датчик освещенности, чтобы моя система могла определить пасмурно на улице или солнечно. Датчик температуры воды установлен в емкости для полива.
Все показания с датчиков через беспроводную сеть Wi-Fi передаются на мобильный телефон (рис. 8). Таким образом я могу оперативно контролировать какая среда у меня в теплице, чтобы принять решение о проветривании теплицы.
Программное обеспечение позволяетс телефона включить как вручную полив растений, так и автоматически при достижении низкого значения уровня влажности.
2.3. Программная часть
Программа (рис. 9) была написана в среде разработке ArduinoIDE. В программе подключены следующие библиотеки:
- DHT.h
- OneWire.h
- DallasTemperature.h
- RemoteXY.h
2.4. Эксперимент. Посадка овса.
Для проведения эксперимента я купил в магазине для садоводов семена овса.
Методика эксперимента:
Замочить семена
Высадить в грунт
Оценить всхожесть семян в разных условиях
Ход эксперимента.
3 апреля я замочил семена для последующей лучшей всхожести на сутки (рис. 10).
5 апреля, отобрав 14 семян, я высадил их в грунт: в теплицу 7 семян и 7 семян высадил в простой мини парник (рис. 11). В теплице был включен автополив на разработанной мною программе. Также при высоких температурах внутри теплицы я производил проветривание теплицы. В парнике полив осуществлялся вручную.
Результат эксперимента.
10 апреля я оценил всхожесть семян в двух средах. В теплице взошли 5 семян из 7. В парнике взошли всего 4 семени (рис 12). То есть всхожесть семян в теплице составила 71%, а в парнике 57%.
Выводы:
- всхожесть семян в «умной теплице» выше, чем в обычном парнике;
- трудозатраты в «умной теплице» ниже, чем ухаживать за семенами самостоятельно.
Заключение
В заключении хочу отметить, тема моей работы очень интересна, при ее исследовании я смог научиться:
- подключать датчики и исполнительные механизмы;
- программировать платформу Arduino;
- анализировать результаты работы программы;
- работать строительным инструментом и паяльником;
В работе я добился следующих результатов:
- система мониторинга и автоматизации теплицы позволит добиться лучших урожаев меньшими трудозатратами;
- «Умную теплицу» можно модернизировать и повышать функционал в дальнейшем.
Литература
http://arduino.cc
https://ru.wikipedia.org/wiki/Arduino
https://ru.wikipedia.org/wiki/ESP8266
http://amperka.ru
http://orehi-zerna.ru/oves-posadka-i-uhod/
Приложения
Рис. 1. Arduino mega 2560
D HT22 ДатчиквлажностипочвыDS18B20
Фоторезистор
Р ис. 2. Датчики
Реле
Электромагнитный кран
Рис.3. Исполнительные механизмы
Рис. 4. Интерфейс Wi-Fi
Рис. 5. Макет теплицы
Рис.6. Изготовление теплицы
Рис. 7. Схема «умной теплицы»
Рис. 8. Программанамобильномтелефоне
#define REMOTEXY_MODE__ESP8266_HARDSERIAL_POINT
#include <RemoteXY.h>
#include <DHT.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// настройкисоединения
#define REMOTEXY_SERIAL Serial1
#define REMOTEXY_SERIAL_SPEED 115200
#define REMOTEXY_WIFI_SSID "RemoteXY"
#define REMOTEXY_WIFI_PASSWORD "12345678"
#define REMOTEXY_SERVER_PORT 6377
#define StreetDHT 22
#define GHauseDHT 24
#define ONE_WIRE_BUS 26
floatGHauseDirt= 0;
floatDirtT= 0;
floatFotoGHause= 0;
int SENSE= 13; // аналоговыйсигналдатчикавлажностипочвы A13
int FOTO= 14; // аналоговый сигнал датчика освещенности A14
int SERV=9; //сервоприводна PWM13
intServoGHause=0;
floatWaterT=0;
// конфигурацияинтерфейса
#pragma pack(push, 1)
uint8_tRemoteXY_CONF[] =
{ 255,1,0,58,0,162,1,8,166,0,
130,1,6,39,52,23,47,130,1,6,
7,52,28,138,129,0,32,0,38,5,
36,208,163,208,156,208,157,208,144,208,
175,32,208,162,208,149,208,159,208,155,
208,152,208,166,208,144,0,67,4,7,
13,20,5,2,205,6,129,0,8,8,
17,4,134,208,162,32,209,131,208,187,
208,184,209,134,209,139,0,67,4,34,
13,20,5,2,205,6,129,0,34,8,
20,4,134,208,146,208,155,32,209,131,
208,187,208,184,209,134,209,139,0,67,
4,7,26,20,5,2,205,6,129,0,
6,20,21,4,134,208,162,32,209,130,
208,181,208,191,208,187,208,184,209,134,
209,139,0,67,4,34,26,20,5,2,
204,6,129,0,32,20,24,4,134,208,
146,208,155,32,209,130,208,181,208,191,
208,187,208,184,209,134,209,139,0,67,
4,7,50,20,7,135,26,6,129,0,
7,41,20,5,94,208,162,32,208,183,
208,181,208,188,208,187,208,184,0,129,
0,34,41,24,5,94,208,146,208,155,
32,208,183,208,181,208,188,208,187,208,
184,0,130,1,63,7,34,13,94,130,
1,63,22,34,13,205,129,0,68,22,
21,6,165,208,162,32,208,178,208,190,
208,180,209,139,0,67,0,72,28,20,
5,165,205,6,2,0,63,43,34,17,
194,183,31,31,208,178,208,186,208,187,
209,142,209,135,208,184,209,130,209,140,
0,208,178,209,139,208,186,208,187,209,
142,209,135,208,184,209,130,209,140,0,
129,0,70,36,18,6,36,208,159,208,
190,208,187,208,184,208,178,0,66,0,
48,48,7,13,2,26,67,1,63,11,
34,6,1,16,21,129,0,40,48,7,
3,134,208,161,209,131,209,133,208,190,
0,129,0,36,58,12,3,134,208,146,
208,187,208,176,208,182,208,189,208,190,
0,129,0,71,7,19,4,1,208,189,
208,176,32,209,131,208,187,208,184,209,
134,208,181,58,0 };
// структура определяет все переменные вашего интерфейса управления
struct {
// inputvariable
uint8_t AutoRain; // =1 если переключатель включен и =0 если отключен
// outputvariable
charStreetT[6]; // =строка UTF8 оканчивающаяся нулем
charStreetH[6]; // =строка UTF8 оканчивающаяся нулем
charGHauseT[6]; // =строка UTF8 оканчивающаяся нулем
charGHauseH[6]; // =строка UTF8 оканчивающаяся нулем
charDirtT[6]; // =строка UTF8 оканчивающаяся нулем
charWaterT[6]; // =строка UTF8 оканчивающаяся нулем
int8_t level_1; // =0..100 положение уровня
charFotoGHause[21]; // =строка UTF8 оканчивающаяся нулем
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
#define PIN_AUTORAIN 3
DHT dht22(StreetDHT, DHT22);
DHT dht11(GHauseDHT, DHT22);
OneWireoneWire(ONE_WIRE_BUS);
DallasTemperaturesensors(&oneWire);
DeviceAddress insideThermometer0;
DeviceAddress insideThermometer1;
void setup()
{
RemoteXY_Init ();
Serial.begin(9600);
dht22.begin();
dht11.begin();
pinMode (PIN_AUTORAIN, OUTPUT);
if (!sensors.getAddress(insideThermometer0, 0)) Serial.println("Ненайденадресдатчика 0");
Serial.print("Адресдатчика 0: ");
Serial.println();
sensors.setResolution(insideThermometer0, 9);
if (!sensors.getAddress(insideThermometer1, 1)) Serial.println("Ненайденадресдатчика 1");
Serial.print("Адресдатчика 1: ");
Serial.println();
sensors.setResolution(insideThermometer1, 9);
}
floatprintTemperature(DeviceAddressdeviceAddress)
{
floattempC = sensors.getTempC(deviceAddress);
returntempC;
}
void loop()
{
RemoteXY_Handler ();
digitalWrite(PIN_AUTORAIN, (RemoteXY.AutoRain==0)?LOW:HIGH);
floatStreetH = dht22.readHumidity();
floatStreetT = dht22.readTemperature(); //Измеряемтемпературунаулице
sensors.requestTemperatures();
DirtT= printTemperature(insideThermometer0);
WaterT= printTemperature(insideThermometer1);
GHauseDirt= analogRead(SENSE);
RemoteXY.level_1 = (int)(GHauseDirt / 10.24);
////фоторезистор
FotoGHause= analogRead(FOTO);
if ((FotoGHause>0) and (FotoGHause<100)) {
strcpy (RemoteXY.FotoGHause,"НОЧЬ");
}
else if ((FotoGHause>101) and (FotoGHause<500))
{strcpy (RemoteXY.FotoGHause,"ПАСМУРНО"); }
else
{strcpy (RemoteXY.FotoGHause,"СОЛНЕЧНО");
}
dtostrf(StreetH, 0, 2, RemoteXY.StreetH);
dtostrf(StreetT, 0, 2, RemoteXY.StreetT);
floatGHauseH = dht11.readHumidity();
floatGHauseT = dht11.readTemperature(); //Измеряемтемпературувтеплице
dtostrf(GHauseT, 0, 2, RemoteXY.GHauseT);
dtostrf(GHauseH, 0, 2, RemoteXY.GHauseH);
dtostrf(DirtT, 0, 1, RemoteXY.DirtT);
dtostrf(WaterT, 0, 1, RemoteXY.WaterT);
}
Рис. 9. Листинг программы
Рис. 10. Замачивание семян
Рис. 11. Высадка семян
Рис. 12. Всходы семян