Автоматическая система полива комнатных растений

Содержание

Слайд 2

Владельцы комнатных растений часто оказываются привязанными к родному дому – их

Владельцы комнатных растений часто оказываются привязанными к родному дому – их

зеленые питомцы требуют регулярного полива, потому оставлять их надолго нельзя. Однако современный мир выдвигает собственные требования – сегодня уже практически недопустимо постоянно сидеть дома, никуда не отлучаясь. Плюс современной цивилизации заключается в том, что она способна дать ответ на большинство сложных вопросов, и в этом случае оптимальным решением является автоматическая система полива комнатных растений.
Слайд 3

Актуальность: Необходимость своевременного полива комнатных растений крайне важна для обеспечения наилучшего

Актуальность: Необходимость своевременного полива комнатных растений крайне важна для обеспечения наилучшего развития

растения. Поэтому необходимо поддерживать уровень влажности почвы на необходимом уровне. Предмет исследования: Автоматическая система полива комнатных растений Методы исследования: социологический опрос, теоретический и сравнительный анализ, наблюдение, эксперимент
Слайд 4

Результаты социологического опроса среди учащихся 6а класса МБОУ гимназии №19 г.Липецка

Результаты социологического опроса среди учащихся 6а класса МБОУ гимназии №19 г.Липецка

Слайд 5

Цель: Разработать автоматическую систему полива комнатных растений, позволяющую в автоматическом режиме

Цель: Разработать автоматическую систему полива комнатных растений, позволяющую в автоматическом режиме

поддерживать заданную влажность почвы. Задачи: 1) Подобрать оборудование для построения автоматической системы полива комнатных растений. 2) Разработать и отладить программу автоматической системы полива комнатных растений. 3) Разработать инструкцию пользователя автоматической системы полива комнатных растений.            
Слайд 6

Среда программирования Arduino IDE Язык программирования устройств Arduino основан на C/C++

Среда программирования Arduino IDE

Язык программирования устройств Arduino основан на C/C++

Слайд 7

Trema Shield Оборудование которое нам понадобиться:

Trema Shield

Оборудование которое нам понадобиться:

Слайд 8

Четырёхразрядный LED индикатор

Четырёхразрядный LED индикатор

Слайд 9

Trema кнопка х2

Trema кнопка х2

Слайд 10

Мембранный насос

Мембранный насос

Слайд 11

Датчик влажности

Датчик влажности

Слайд 12

Схема подключения

Схема подключения

Слайд 13

Скетч. #include // подключаем библиотеку для работы с четырёхразрядным LED индикатором

Скетч.

#include // подключаем библиотеку для работы с четырёхразрядным LED индикатором iarduino_4LED

dispLED(2,3); // объявляем объект для работы с функциями библиотеки iarduino_4LED, с указанием выводов индикатора ( CLK , DIO ) const uint8_t pinSensor = A0; // объявляем константу с указанием номера аналогового входа, к которому подключен датчик влажности почвы const uint8_t pinButtonA = 12; // объявляем константу с указанием номера вывода, к которому подключена кнопка A const uint8_t pinButtonB = 11; // объявляем константу с указанием номера вывода, к которому подключена кнопка B const uint8_t pinPump = 10; /* вывод с ШИМ */ // объявляем константу с указанием номера вывода, к которому подключен силовой ключ
uint8_t btnState; // объявляем переменную для хранения состояний кнопок: 0-не нажаты, 1-нажата A, 2-нажата B, 3-нажата A и B, 4-удерживается A, 5-удерживается B, 6-удерживались A и B uint16_t arrMoisture[10]; // объявляем массив для хранения 10 последних значений влажности почвы uint32_t valMoisture; // объявляем переменную для расчёта среднего значения влажности почвы uint32_t timWatering; // объявляем переменную для хранения времени начала последнего полива (в миллисекундах) uint32_t timSketch; // объявляем переменную для хранения времени прошедшего с момента старта скетча (в миллисекундах) const uint8_t timWaiting = 60; // объявляем константу для хранения времени ожидания после полива (в секундах) от 0 до 99 const uint8_t pwmPump = 100; // объявляем константу для хранения скорости вращения мотора насоса (коэффициент) от 0 до 255 uint16_t timDuration = 5; /* по умолчанию */ // объявляем переменную для хранения длительности полива (в секундах) от 0 до 99
Слайд 14

uint16_t limMoisture = 0; /* по умолчанию */ // объявляем переменную

uint16_t limMoisture = 0; /* по умолчанию */ // объявляем переменную

для хранения пороговой влажности почвы (для вкл насоса) от 0 до 999 uint8_t modState = 0; /* при старте */ // объявляем переменную для хранения состояния устройства: 0-не активно, 1-ожидание, 2-активно, 3-полив, 4-установка пороговой влажности, 5-установка времени полива void setup(){ dispLED.begin(); // инициируем LED индикатор pinMode(pinButtonA, INPUT); // переводим вывод pinButtonA в режим входа pinMode(pinButtonB, INPUT); // переводим вывод pinButtonB в режим входа pinMode(pinPump, OUTPUT); // переводим вывод pinPump в режим выхода digitalWrite(pinPump, LOW); // выключаем насос timWatering = 0; // сбрасываем время начала последнего полива } void loop(){
//*******Чтение данных:******* btnState = Func_buttons_control(); // читаем состояние кнопок, но не дольше 2 секунд timSketch = millis(); // читаем текущее время с момента старта скетча if(timWatering>timSketch){timWatering=0;} // обнуляем время начала последнего полива, если произошло переполнение millis() valMoisture = 0; for(int i=0; i<9; i++){arrMoisture[i]=arrMoisture[i+1];} arrMoisture[9]=analogRead(pinSensor); for(int i=0; i<10; i++){valMoisture+=arrMoisture[i];} valMoisture/=10; // вычисляем среднее значение влажности почвы //*******Управление устройством:******* switch(modState){
Слайд 15

// Устройство не активно case 0: if(btnState){ // если зафиксировано нажатие

// Устройство не активно case 0: if(btnState){ // если зафиксировано нажатие

или удержание кнопок if(btnState==6){modState=4;} if(btnState==3){modState=2; limMoisture=valMoisture;} } if(timSketch%100==0){ // если начинается десятая доля секунды if(timSketch/1000%2){dispLED.print(valMoisture);}else{dispLED.print(" ");} } break; // Устройство в режиме ожидания (после полива) case 1: if(btnState){ // если зафиксировано нажатие или удержание кнопок if(btnState==6){modState=4;} if(btnState==1){modState=2;} if(btnState==2){modState=2;} if(btnState==3){modState=2;} } if(timSketch%100==0){ // если начинается десятая доля секунды dispLED.print("stop"); dispLED.point((timSketch/100%4)+1,true); } if(timDuration+timWaiting-((timSketch-timWatering)/1000)<=0){// если закончилось время ожидания modState=2; } break;
Слайд 16

// Устройство активно case 2: if(btnState){ // если зафиксировано нажатие или

// Устройство активно case 2: if(btnState){ // если зафиксировано нажатие или

удержание кнопок if(btnState==6){modState=4; dispLED.light(7);} } if(timSketch%100==0){ // если начинается десятая доля секунды if(timSketch/1000%15<5 ){dispLED.light(7); dispLED.print(valMoisture);}else if(timSketch/1000%15<10){dispLED.light(1); dispLED.print(limMoisture,LEN4);}else {dispLED.light(7); if(timWatering){dispLED.print(int((timSketch-timWatering)/1000%3600/60),int((timSketch-timWatering)/1000%3600%60),TIME);}else{dispLED.print("----");}} } if(valMoisture<=limMoisture){ // если текущая влажность почвы меньше пороговой timWatering=timSketch; modState=3; dispLED.light(7); analogWrite(pinPump,pwmPump); } break;
Слайд 17

Основные положения инструкции пользователя При подаче питания, устройство не активно (на

Основные положения инструкции пользователя

При подаче питания, устройство не активно (на индикаторе мигает текущее

значение влажности почвы).
Если однократно нажать на обе кнопки «A» и «B», то текущее состояние влажности почвы будет сохранено как пороговое (то при котором требуется начать полив) и устройство перейдёт в рабочий режим. Пороговое значение влажности почвы можно изменить в режиме ввода значений.
Если нажать и удерживать обе кнопки «A» и «B» дольше 2 секунд, то устройство перейдёт в режим ввода значений.
В рабочем режиме устройство выводит на индикотор показания: текущей влажности почвы, пороговой влажности почвы и времени прошедшего с момента последнего полива. (Пороговая влажность почвы отображается тусклее чем остальные показания). Если устройство находится в рабочем режиме и значение текущей влажности почвы упадёт ниже значения пороговой влажности почвы, то устройство перейдёт в режим полива.
Слайд 18

В режиме полива устройство выводит на индикатор количество секунд до окончания

В режиме полива устройство выводит на индикатор количество секунд до окончания полива и

мигает точками, а также подаёт сигнал ШИМ на силовой ключ, который включает насос. Значение ШИМ (скорость мотора насоса) указывается в скетче. Длительность полива устанавливается в режиме ввода значений. По окончании полива, устройство переходит в режим ожидания.
В режиме ожидания устройство выводит на индикатор надпись STOP и мигает точками. Данный режим предусмотрен для того, что бы влага равномерно распределилась по грунту до перехода устройства в рабочий режим. Время нахождения в режиме ожидания указывается в скетче. По истечении времени режима ожидания, устройство перейдёт в рабочий режим.
Слайд 19

В режим ввода значений можно перейти из любого режима, удерживая обе

В режим ввода значений можно перейти из любого режима, удерживая обе кнопки «A» и

«B» дольше 2 секунд. Данный режим состоит из двух пунктов: • установка пороговой влажности почвы (при котором требуется начать полив) и • установка длительности самого полива. Вначале отобразится значение пороговой влажности, которое можно изменить нажатием или удержанием  кнопки  «A» (уменьшение), или  кнопки  «B» (увеличение). Если однократно нажать на обе  кнопки  «A» и «B», то значение изменится на текущую влажность почвы. После того как пороговая влажность задана, нужно нажать и удерживать дольше 2 секунд обе  кнопки  «A» и «B», на экране отобразится длительность полива, которую можно изменить нажатием или удержанием  кнопки  «A» (уменьшение), или  кнопки  «B» (увеличение). После того как длительность полива задана, нужно нажать и удерживать дольше 2 секунд обе  кнопки  «A» и «B», устройство перейдёт в рабочий режим.
Если в режиме полива нажать любую кнопку, устройство прекратит полив и перейдёт в режим ожидания.
Если в режиме ожидания нажать любую кнопку, устройство перейдёт в рабочий режим.
Слайд 20

Выводы 1. В качестве программного средства для построения автоматической системы полива

Выводы
1. В качестве программного средства для построения автоматической системы полива комнатных

растений выбрана платформа Arduino UNO
2. Определены следующие составляющие системы полива: датчик влажности; мембранный насос.
3. Разработана и отлажена управляющая программа автоматической системы полива .
4. Разработаны основные положения инструкции по пользованию созданным устройством.