ДЕПАРТАМЕНТ ОБРАЗОВАНИЯ ГОРОДА МОСКВЫ
Государственное бюджетное общеобразовательное учреждение
города Москвы «Школа № 000»
Автоматизированная система полива, основанная на согласовании показаний влажности-температуры и потребностей культуры, указанной пользователем
Автор работы: ,
Руководитель:
Оглавление
Введение 11
Аннотация 11
Цель 11
Задачи 12
Дорожная карта проекта 12
Обзор существующих систем автополива. 12
Система Hunter 12
Система GARDENA 13
Проблемы 14
Предварительные исследования, необходимые для моего проекта 15
Сравнительная характеристика дождевального и капельного полива 15
Ботаническое описание, необходимое для создания системы автополива 16
Экономическое обоснование 17
Используемые ресурсы 19
Интернет вещей 19
MQTT протокол 19
Реализация MQTT протокола 20
Брокер данных 20
Платформа Народного Мониторинга 20
Контроллер телеметрический 21
Проектные решения 22
Датчик влажности почвы 22
Цикл обработки протокола 23
Структурная и функциональная схема 27
Заключение 28
Литература 28
Введение
Сколько вы сил затрачиваете, чтобы ухаживать за огородом на даче? Моя бабушка регулярно ездит на дачу за город, и зачастую лишь для того, чтобы полить «сохнущие огурцы». Так, я задалась вопросом: нельзя ли облегчить ее труд, сократить затраты времени и сил?
Аннотация
В условиях шумного и пыльного города человек стремится к тишине и покою. С этой целью люди приобретают участки и загородные дома. На выходные многие уезжают на дачу, где разводят огород. Со временем этот отдых превращается в тяжкий труд: растения требуют тщательного ухода, хозяева теперь обязаны приезжать каждые выходные на свой дачный участок, а также поддержание жизни растений часто требует физических усилий. Таким образом, многие отказываются от содержания огородов.
Но в основном хозяевами огородных участков остаются пожилые люди, которые самозабвенно отдаются уходу за растениями. Однако такая деятельность ведет за собой тяжелую физическую работу: полив растений, борьба с сорняками, вредителями. Однако чаще всего выделяют как самую затратную и неприятную работу ручной полив растений. К счастью, возможно создать технологии, призванные облегчить дачникам и садоводам полив растений.
Я решила создать систему автополива, которая должна избавить людей от этой тяжкой работы.
Цель:
Создать автоматизированную адаптивную систему полива, основанную на согласовании показаний датчиков влажности и почвы, а также ориентированную на указанные потребителем профили культуры, для садовых и дачных участков.
Задачи:
Изучить существующие системы автополива, выполнить их сравнительную характеристику Выполнить биологическое исследование вопроса Обосновать используемые технологии Выполнить чертежи, выделить основные части системы Разработка и реализация программной части Создание механической части проекта ТестированиеРезультатом проекта будет являться собственная система автополива, исключающая недостатки и включающая в себя преимущества других систем.
Дорожная карта проекта
Этап работы | Результат | Сроки работы |
Формирование идеи разработки | Постановка цели, задач | Конец учебного года 2016-2017 |
Обзор существующих разработок | Выделение проблем, которые должна решать моя система | Начало учебного года 2017-2018 |
Поиск ресурсов | Покупка контроллера, датчиков влажности почвы, помпы для подачи воды | Октябрь 2018 |
Программная разработка | Циклы обработки протоколов, подачи воды, управление системой | Ноябрь и декабрь 2018 |
Выполнение чертежей | Схема нового подключения датчика влажности почвы, структурная и функциональная схема | Ноябрь 2018 |
Тестирование и сборка | Готовая система автополива | Декабрь-март 2018 |
Обзор существующих систем автополива.
Система Hunter
Как и всякая система, система автоматизированного полива Hunter содержит множество элементов, выполняющих каждый свою функцию.
- электронный блок управления (контроллер, блок управления подачей воды) погодные датчики; электромагнитные клапаны; накопительная емкость для воды; насосная система; дождеватели; трубы и фитинги.
Система Hunter может работать в разных режимах. В зависимости от потребности пользователя закупаются и устанавливаются различные элементы системы, такие как датчики влажности почвы, погодные датчики, датчики дождя.
Контроллер системы запрограммирован на полив через определенные промежутки времени. Дополнительно установленные датчики корректируют время полива. Например, датчик дождя останавливает полив во время ливневых осадков, а если установить дополнительно датчик влажности почвы в контрольной точке, он будет корректировать возможность и интенсивность полива во время дождя, если уровень дождевых осадков недостаточный.
После того как программа высчитывает, что необходим полив, контроллер посылает сигнал на блок управления подачей воды, открываются электромагнитные клапаны - это своеобразный кран, который регулирует подачу воды. Следующим звеном в системе является дождеватели или спринклеры, непосредственно выполняющие функцию орошения территории.
Система GARDENA
С помощью электромагнитных клапанов система GARDENA регулирует полив отдельных линий в нужном режиме независимо друг от друга. В сочетании с автоматическим распределителем воды таймер GARDENA MasterControl может управлять поливом до шести зон, автоматически организуя их последовательный полив. А датчики дождя и влажности почвы контролируют влажность почвы, прерывают или блокируют запрограммированный цикл полива при выпадении осадков и достаточном увлажнении почвы. Таким образом, через определенное время контроллер открывает электромагнитный клапан на определенной зоне.
Таким образом, изучив популярные системы автополива, можно заметить и выделить проблемы, которые должна решать моя система автоматизированного полива.
Проблемы
Экономичность – моя система полива не должна содержать много дорогостоящих деталей, для того чтобы для любого хозяина дачного участка данная система была по карману.
Автоматизация - система полива должна осуществлять орошение автоматически, не требуя усилий от пользователя.
Повышение урожайности за счет автоматического орошения - очевидна необходимость повышения урожайности, так как в периоды засухи система автополива должна возмещать недостаток воды. А эффективность ручного полива очень мала, в отличие от автоматического.
Однако, изучив принцип работы существующих систем автополива, я заметила, что такой принцип работы не решает очевидно важную проблему.
Существует оптимальный и критический уровень влажности почвы для разных видов растений. Этот показатель характеризует необходимый уровень влажности почвы для определенного растения, при котором культура будет давать наибольший урожай. Совершенно ясно, что нужно учитывать оптимальный уровень влажности почвы для каждой культуры, что сэкономит водные ресурсы и значительно повысит урожайность. Таким образом, можно выделить еще две проблемы: разделение участка на культурные зоны и контроль над влажностью почвы для повышения урожайности.
Для решения этой проблемы установим контроль над влажностью почвы – на каждые 5 квадратных метров поставим датчик влажности почвы, который будет отправлять информацию контроллеру, а он, в свою очередь, в соответствии с указанной культурой определяет оптимальный уровень влажности почвы и решает, необходим ли полив. А также, разделим участок на культурные зоны, в них будут входить группы датчиков почвы.
Так, моя система включит в себя некоторые преимущества других автоматических систем полива и новый, не везде рассмотренный аспект урожайности растений - оптимальный и критический уровень влажности почвы для разных видов растений.
Предварительные исследования, необходимые для моего проекта
Сравнительная характеристика дождевального и капельного полива
Виды полива | Дождевальный | Капельный |
Преимущества | Возможность применения на полях со сложной топографией Большой выбор размеров сопла Мобильность Большая площадь орошения одним сплинклером возможность достижения точной и одинаковой интенсивности полива на поливаемом участке большой площади | исключено искажение сектора полива обеспечен полив конкретного прикорневого участка растения; вода не поступает в соседние ландшафтные зоны; полив равномерно распределяется по всей площади участка; установка системы не требует земляных работ, занимает мало времени; существует возможность подкормки растений минеральными удобрениями; |
Недостатки | Большая стоимость установки Затраты на электроэнергию Искажение сектора полива ветром Образование корки на поверхности почвы Усложняет проведение сельскохозяйственных работ | небольшой срок службы (от 2 до 5 лет) – а это значит, что по мере изнашивания детали системы необходимо будет заменять новыми; возможность повреждения капельницы (шлангов) грызунами или домашними животными. |
Сравнив данные способы полива, я выбрала капельный полив, так как он позволит удобно контролировать уровень влажности почвы и более точно разделит участки на зоны.
Ботаническое описание, необходимое для создания системы автополива
Для того чтобы составить программно-алгоритмическую часть проекта нужно составить перечень условий и таблицу значений оптимальных показаний влажности почвы.
В данной таблице представлены показатели влажности почвы для основных культур по нижней границе нормы.
Растения | Оптимальная влажность почвы |
Картофель | 60-75% |
Люцерна | 75-80% |
Кукуруза | 75% |
Капуста | 75-80% |
Огурцы и томаты | 70-75% |
Морковь и свекла | 60-70% |
Травы (укроп, петрушка, кинза) | 80-85% |
Др. овощи | 60-70% |
Помимо контроля над влажностью почвы необходимо выполнять еще некоторые условия:
Огурцы и томаты в прохладную погоду с высокой влажностью воздуха не следует поливать в связи с опасностью поражения их грибковыми и бактериальными заболеваниями. Нельзя поливать растения в жаркое время дня (кроме огурцов), а также большими нормами после значительного иссушения почвы Поливать следует равномерно и не слишком большими объемами.Экономическое обоснование
Моя система автоматизированного полива подразумевает большое количество элементов, отсутствующих в других, уже существующих системах. И возникает разумный вопрос: оправдана ли необходимость контроля над влажностью почвы, или же затраты на новые элементы сильно повысят цену общей стоимости моей системы?
Элементы, отсутствующие в существующих системах и предусмотренные в моей системе автополива – это датчики влажности почвы.
Таких датчиков нужно поставить по датчику на 5 квадратных метров. Насколько сильно они повысят общую стоимость?
Один датчик влажности почвы стоит не больше 300 рублей. Мне необходимы наиболее качественные датчики, для долговечной работы системы. Возьмем участок площадью 300 квадратных метров
![]()
Таким образом, стоимость системы повысится на 18000 рублей. Выясним, сколько процентов составляет эти затраты от общей стоимости системы и ее установки.
С помощью онлайн калькулятора группы компаний «ИПААР полив», я рассчитала стоимость оборудования и монтажа на земельный участок площадью 300 квадратных метров. (ссылка на сайт)
Расчет включает в себя стоимость оборудования, емкости и насосного оборудования и монтажных работ
Стоимость оборудования – 85 958 рублей
Монтажные работы – 34 383 рублей
Общая стоимость – 120 341 рублей
Рассчитаем на сколько процентов повысится общая системы:
![]()
Это допустимый процент от стоимости, а значит моя система оправдывает затраты, в связи с повышением эффективности работы системы автополива, которая повышает урожайность культур.
Используемые ресурсы
Интернет вещей
Мою систему точно описывают современные технологии «Интернет вещей» - The Internet of Things. Так называемые «вещи» - физические элементы, оснащённые встроенными технологиями для взаимодействия друг с другом или с внешней средой. В моем случае «вещами» будут именоваться датчики влажности почвы и главный контроллер (+блок управления поливом). Обмен информацией между ними и пользователем позволяет указать на необходимость использования разработок технологий «интернета вещей».
В первую очередь обозначим средства идентификации: в данной системе автополива, которая подразумевает неразрывную связь между множественными объектами, каждый физический объект будет выходить в сеть, и в таком случае, идентификатором будет являться MAC-адрес сетевого адаптера, позволяющий идентифицировать устройство на канальном уровне.
Для демонстрации системы сервером объединенных в сеть вещей будет являться ПНМ, которая обработает данные датчиков и наглядно охарактеризует их.
Для обмена информацией между датчиками и контроллером я буду использовать MQTT протокол. Это наиболее удобный и безопасный способ передачи информации в «интернете вещей».
MQTT протокол
MQTT протокол часто используют для обмена данными. Использование этого протокола позволяет упростить передачу информации и снизить нагрузку на канал связи, обеспечить безопасный обмен данными без риска потери информации. Протокол не накладывает ограничений на структуру, кодирование или схему данных – это делает его простым в использовании. Именно поэтому я выбрала этот протокол для обмена информацией между датчиками и контроллером.
Реализация MQTT протокола
Брокер данных
Брокер — это программа, выполняющая функции TCP сервера с динамической базой данных.
Датчики будут публиковать информацию через брокер данных, через него же контроллер или ПНМ будут принимать ее– обмен данными происходит по принципу издатель-подписчик. Издатель публикует информацию под определенным заголовком (топиком), а подписчик забирает информацию, указав необходимый заголовок. Данные передаются пакетом поверх протокола TCP/IP. Получив пакет, брокер рассылает его всем устройствам в сети согласно их подписке. Чтобы устройство что-то получило от брокера оно должно подписаться на топик. Контроль передачи информации осуществляется по трем уровням обслуживания (QoS). Таким образом топики представляют собой удобный механизм организации связей разных видов: один ко многим, многие к одному и многие ко многим.
Платформа Народного Мониторинга -
Далее ПНМ, геоинформационный сервис по отображению на карте мира и контролю (на ПК, смартфонах и других гаджетах) показаний датчиков своих участников (температуры, влажности, атм. давления, скорости и направления ветра, радиации, энергопотребления и многих других), а также частных и городских веб-камер для публичного или частного(приватного) просмотра.
Для передачи показаний с датчиков на сервер платформы используется устройство мониторинга, которое собирает показания и отправляет их по сети интернет через MQTT протокол поверх TCP/IP. В моем случае устройством мониторинга будет являться контроллер, сначала обрабатывающий математическую модель показаний датчиков, то есть моделируя показания по определенному математическому закону, а далее обрабатывая реальные данные с датчиков влажности почвы.
ПНМ удобна в предоставлении и демонстрации информации на интерактивной карте, основанной на картах Google. Возможна публикация данных для общего доступа, при условии наблюдения за температурой и влажностью воздуха внешней среды. В другом случае публикация данных возможна только для автора публикации либо по подписке на него. Уровень влажности почвы не входит в условия общей публикации, поэтому мне удалось вывести данные только через собственный кабинет.
ПНМ предоставляет широкий сервис. Она предоставляет услуги по отслеживанию работы датчиков, наглядной демонстрации показаний за период работы датчика, возможность отслеживания работы датчика в реальном времени, обратной связи с пользователем по смс и эл. почте.
Контроллер телеметрический
Для осуществления управления системой автоматического полива, я выбрала контроллер компании «Гедэл»
Процессор: CortexM3 LPC1768FBD100
Входы:
1 дискретный
1 аналоговый
Выходы:
1дискретный
1релейный (сухой контакт)
1 аналоговый
Интерфейсы:
RS485 – 2 штуки
USB (опционально)
SDmicro (опционально)
Связь:
GSM G3
Gemalto EHS5-E
Контроллер многофункционален и оборудован GSM модулем, имеет возможность вставить 2 симкарты. Помещен в красивый и надежный корпус.
Именно поэтому я выбрала данный контроллер
Проектные решения
Датчик влажности почвы
Для того чтобы измерять уровень влажности почвы, необходимо сделать чувствительный датчик влажности почвы.
Конструкция датчика влажности почвы представляет собой два проводника, подключенных к слабому источнику напряжения. Когда влага в земле высыхает, сопротивление в проводниках растет, а напряжение понижается. Такие датчики позволяют измерять изменения влажности грунта
Схема подключения датчика и компаратора LM393 к контроллеру:

Элемент программы, обрабатывающий показания датчика
#define MAX_HUM_VAL 2330
#define MIN_NUM_VAL 490
// external sensor voltage
if (ADDR2_bit. DONE && ADC_Ch == ACCBATSNS)
{
temp = ADDR2_bit. RESULT;
if (temp > MAX_HUM_VAL) temp = MAX_HUM_VAL;
if (temp < MIN_NUM_VAL) temp = MIN_NUM_VAL;
temp = MAX_HUM_VAL - temp;
temp *= 10000;
temp /= (MAX_HUM_VAL-MIN_NUM_VAL);
humidity_plant = temp;
humidity_plant /= 100;
}
Цикл обработки протокола
/ *************************************************************************
* Function Name: main
switch (MQTT_tx. State)
{
case IDDLE:
break;
case SEND_CONN_REQUEST:
if (MQTT_tx. Retries)
{
MQTT_tx. Retries--;
MQTT_tx. Timeout = TIME_OUT;
}
else
{
if (!GSM_SendAT ("AT^SISC=0\r\n", "OK", 5, 3000))
{ GSM. State = TCP_CONNECT_ERROR; break; }
MQTT_tx. State = IDDLE;
publish_topic = NO_TOPIC;
led_state = LED_BLINK;
published_topics = 0;
break;
}
txptr = 3;
MQTT_tx. Buffer[txptr++] = 0;
MQTT_tx. Buffer[txptr++] = 4;
MQTT_tx. Buffer[txptr++] = 'M';
MQTT_tx. Buffer[txptr++] = 'Q';
MQTT_tx. Buffer[txptr++] = 'T';
MQTT_tx. Buffer[txptr++] = 'T';
MQTT_tx. Buffer[txptr++] = 4;
MQTT_tx. Buffer[txptr++] = USER_NAME_FLAG|USER_PASSWORD_FLAG|CLEAR_SESION_FLAG;
MQTT_tx. Buffer[txptr++] = (uint8_t)(KEEPALIVE_DEF>>8);
MQTT_tx. Buffer[txptr++] = (uint8_t)KEEPALIVE_DEF;
MQTT_tx. Buffer[txptr++] = 0;
MQTT_tx. Buffer[txptr++] = strlen ((char const*)Settings. ClientID);
strcpy ((char*)MQTT_tx. Buffer+txptr, (char const*)Settings. ClientID);
txptr += strlen ((char const*)Settings. ClientID);
MQTT_tx. Buffer[txptr++] = 0;
MQTT_tx. Buffer[txptr++] = strlen ((char const*)Settings. UserName);
strcpy ((char*)MQTT_tx. Buffer+txptr, (char const*)Settings. UserName);
txptr += strlen ((char const*)Settings. UserName);
MQTT_tx. Buffer[txptr++] = 0;
MQTT_tx. Buffer[txptr++] = strlen ((char const*)Settings. UserPassword);
strcpy ((char*)MQTT_tx. Buffer+txptr, (char const*)Settings. UserPassword);
txptr += strlen ((char const*)Settings. UserPassword);
if (encode_mqtt_remainig_len (MQTT_tx. Buffer + 1, txptr-3) < 2)
{
MQTT_tx. Buffer[1] = MQTT_FHDR_MSG_TYPE_CONNECT;
if (write_tcp (MQTT_tx. Buffer+1, txptr-1))
{ GSM. State = TCP_SEND_ERROR; break; }
}
else
{
MQTT_tx. Buffer[0] = MQTT_FHDR_MSG_TYPE_CONNECT;
if (write_tcp (MQTT_tx. Buffer, txptr))
{ GSM. State = TCP_SEND_ERROR; break; }
}
MQTT_tx. State = WAIT_CONN_REQUEST_REPLAY;
break;
case WAIT_CONN_REQUEST_REPLAY:
while (get_mqtt_packet())
{
if (MQTT_rx. Hdr == MQTT_FHDR_MSG_TYPE_CONNACK)
{
if (MQTT_rx. Pack[1] == 0) // connection accepted
{
TCon = 0;
MQTT_tx. State = PUBLISH;
MQTT_tx. Retries = MAX_RETRIES;
MQTT_tx. Timeout = 0;
}
break;
}
}
break;
case SUBSCRIBE_TOPICS:
MQTT_tx. State = WAIT_SUBSCRIBE_ACK;
if (MQTT_tx. Retries)
{
MQTT_tx. Retries--;
MQTT_tx. Timeout = TIME_OUT;
}
else
{
if (!GSM_SendAT ("AT^SISC=0\r\n", "OK", 5, 3000))
{ GSM. State = TCP_CONNECT_ERROR; break; }
MQTT_tx. State = IDDLE;
led_state = LED_BLINK;
publish_topic = NO_TOPIC;
published_topics = 0;
TCon = TconValue;
break;
}
txptr = 3;
if (MQTT_tx. Retries == MAX_RETRIES) MQTT_tx. PacketID++;
MQTT_tx. Buffer[txptr++] = (uint8_t) (MQTT_tx. PacketID>>8);
MQTT_tx. Buffer[txptr++] = (uint8_t) MQTT_tx. PacketID;
MQTT_tx. Buffer[txptr++] = 0;
MQTT_tx. Buffer[txptr++] = strlen (SETUP_TOPIC_NAME);
memcpy ((char*)MQTT_tx. Buffer+txptr, SETUP_TOPIC_NAME, strlen (SETUP_TOPIC_NAME));
memcpy ((char*)MQTT_tx. Buffer + txptr + 8, (char const*)Settings. ClientID, 5);
txptr += strlen (SETUP_TOPIC_NAME);
MQTT_tx. Buffer[txptr++] = SETUP_TOPIC_QOS;
if (encode_mqtt_remainig_len (MQTT_tx. Buffer+1, txptr-3) < 2)
{
MQTT_tx. Buffer[1] = MQTT_FHDR_MSG_TYPE_SUBSCRIBE;
if (write_tcp (MQTT_tx. Buffer+1, txptr-1))
{ GSM. State = TCP_SEND_ERROR; break; }
}
else
{
MQTT_tx. Buffer[1] = MQTT_FHDR_MSG_TYPE_SUBSCRIBE;
if (write_tcp (MQTT_tx. Buffer, txptr))
{ GSM. State = TCP_SEND_ERROR; break; }
}
break;
case WAIT_SUBSCRIBE_ACK:
case WAIT_FOR_PUBLISH_ACK:
case PUBLISH:
on_duty_timer = 18000;
if (get_mqtt_packet())
{
switch (MQTT_rx. Hdr & 0xF0)
{
case MQTT_FHDR_MSG_TYPE_SUBACK:
if ((MQTT_rx. Pack[0] == (uint8_t)(MQTT_tx. PacketID>>8)) &&
(MQTT_rx. Pack[1] == (uint8_t) MQTT_tx. PacketID) &&
(MQTT_rx. Pack[2] == 0x01))
{
MQTT_tx. State = PUBLISH;
MQTT_tx. Retries = MAX_RETRIES;
MQTT_tx. Timeout = 0;
publish_topic = NO_TOPIC;
published_topics = 0;
TCon = 0;
}
break;
case MQTT_FHDR_MSG_TYPE_PUBACK:
if (MQTT_rx. Pack[0] == (uint8_t)(MQTT_tx. PacketID>>8) &&
MQTT_rx. Pack[1] == (uint8_t) MQTT_tx. PacketID)
MQTT_tx. State = PUBLISH;
else break;
led_state = LED_ON;
MQTT_tx. Retries = MAX_RETRIES;
MQTT_tx. Timeout = 0;
MQTT_tx. State = PUBLISH;
publish_topic = NO_TOPIC;
break;
case MQTT_FHDR_MSG_TYPE_PUBLISH:
temp = MQTT_rx. Pack[0]; temp <<=8;
temp |= MQTT_rx. Pack[1];
parse_subscription (MQTT_rx. Pack+temp+4, MQTT_rx. Len-temp-4);
if (((MQTT_rx. Hdr & 0x06)>>1) == 1)
{
MQTT_tx. Buffer[0] = MQTT_FHDR_MSG_TYPE_PUBACK;
MQTT_tx. Buffer[1] = 2;
MQTT_tx. Buffer[2] = MQTT_rx. Pack[temp+2];
MQTT_tx. Buffer[3] = MQTT_rx. Pack[temp+3];
if (write_tcp (MQTT_tx. Buffer, 4))
{ GSM. State = TCP_SEND_ERROR; break; }
}
break;
}
break;
}
if (!publish_topic || MQTT_tx. State!= PUBLISH) break;
if (MQTT_tx. Retries)
{
MQTT_tx. Retries--;
MQTT_tx. Timeout = TIME_OUT;
}
else
{
// here we have to disconnect tcp
if (!GSM_SendAT ("AT^SISC=0\r\n", "OK", 5, 3000))
{ GSM. State = TCP_CONNECT_ERROR; break; }
MQTT_tx. State = IDDLE;
led_state = LED_BLINK;
publish_topic = NO_TOPIC;
published_topics = 0;
break;
}
if (MQTT_tx. Retries == MAX_RETRIES-1) MQTT_tx. PacketID++;
txptr = 3;
led_state = LED_OFF;
MQTT_tx. Buffer[txptr++] = 0;
MQTT_tx. Buffer[txptr++] = strlen ();
strcpy ((char*)MQTT_tx. Buffer+txptr, (char const*)Settings. TopicName);
txptr += strlen ((char const*)Settings. TopicName);
MQTT_tx. Buffer[txptr++] = (uint8_t)(MQTT_tx. PacketID>>8);
MQTT_tx. Buffer[txptr++] = (uint8_t) MQTT_tx. PacketID;
txptr += sprintf((char*)(MQTT_tx. Buffer + txptr), "%.2f", humidity_plant);
if (encode_mqtt_remainig_len (MQTT_tx. Buffer+1, txptr-3) < 2)
{
MQTT_tx. Buffer[1] = MQTT_FHDR_MSG_TYPE_PUBLISH|(QOS_DEF<<1);
if (MQTT_tx. Retries!= MAX_RETRIES-1) MQTT_tx. Buffer[1] |= MQTT_FHDR_DUP_FLAG;
if (write_tcp (MQTT_tx. Buffer+1, txptr-1))
{ GSM. State = TCP_SEND_ERROR; break; }
}
else
{
MQTT_tx. Buffer[0] = MQTT_FHDR_MSG_TYPE_PUBLISH|(QOS_DEF<<1);
if (MQTT_tx. Retries!= MAX_RETRIES-1) MQTT_tx. Buffer[0] |= MQTT_FHDR_DUP_FLAG;
if (write_tcp (MQTT_tx. Buffer, txptr))
{ GSM. State = TCP_SEND_ERROR; break; }
}
MQTT_tx. State = WAIT_FOR_PUBLISH_ACK;
break;
}
}
}
}
}
Структурная и функциональная схема, схема расположения системы на участке
Для облегчения демонстрации работы системы и для более легкого понимания сторонними людьми принципа ее работы, а также упрощения задач программирования, разделим систему на три части по общему функциональному и смыслового значению. Получится такая схема:


Верхняя схема демонстрирует необходимость прочной связи между «многим и одним» и между «одним и многим». Маленькими кругами на схеме обозначены датчики влажности почвы, в круглых объектах действующие элементы, в квадратных – осуществляемые действия.
Таким образом, я разделила систему на такие части: датчики, главный контроллер и блок управления поливом.
Нижняя схема показывает возможный способ размещения системы автополива.
Заключение
Я создала систему полива, осуществляющую автоматическое орошение, в соответствии с показаниями датчика влажности почвы и указанной культуры, создала прочную связь с ПНМ и графически изобразила полученные материалы, протестировала систему.
Моя система использует новую сторону вопроса автоматического орошения –уровень влажности почвы, что выделяет ее среди других систем полива.
Продажа данной системы возможна, даже можно спрогнозировать успех этих продаж.
Литература
Интернет-журнал ландшафтного дизайна
Умныйполив. рфМонтаж систем автоматического полива
Moezerno. ruОсобенности заводских и самодельных систем автополива
Smart-poliv. ruУстройство системы автоматического полива
www.Система GARDENA
С. А. Дагаргулия «Опытническая работа школьников с растениями» Повышение эффективности орошаемого земледелия в засушливых условиях юго-востока России www. tssonline. ruТехнологии и средства связи. Протокол MQTT. Особенности, варианты применения, основные процедуры MQTT Protocol.
https://narodmon. ruПНМ
Онлайн калькулятор группы компаний «ИПААР полив»ПРИЛОЖЕНИЯ

График показаний датчика влажности почвы, измеряющего влажность почвы в высыхающем грунте

График математически моделируемого полива

Платформа народного мониторинга

Фото тестировки системы


