«Экономный расход воды. Полив лужайки вокруг школы»
Муниципальное казенное общеобразовательное учреждение
«Средняя общеобразовательная школа г.Нариманов»
Проект
«Экономный расход воды. Полив лужайки вокруг школы»
Авторы проекта:
Сорокин А.И. педагог
Бондин М. учащийся
г. Нариманов 2023г.
Полив лужайки вокруг школы
Идея заключается в том что, полив будет осуществляться в зависимости от того как светит солнце.
Т.е. в зависимости от климатической зоны, и яркости свечения солнца (особенно в летний жаркий период) осуществляется полив территории по принципу чем ярче и испепеляющее светит солнце тем расход воды будет больше, чем день пасмурнее то и полив будет экономичнее. К примеру, в дождливый пасмурный день полив будет чисто символический. Данное устройство не нужно будет контролировать ежедневно. А расход воды можно легко рассчитать по конкретному объекту.
Проект осуществлен на платформе Arduino
В проектах arduino фоторезистор используется как датчик освещения. Получая от него информацию, плата может включать или выключать реле, запускать двигатели, отсылать сообщения. Естественно, при этом мы должны правильно подключить датчик.
Схема подключения датчика освещенности к ардуино довольна проста. Если мы используем фоторезистор, то в схеме подключения датчик реализован как делитель напряжения. Одно плечо меняется от уровня освещённости, второе – подаёт напряжение на аналоговый вход. В микросхеме контроллера это напряжение преобразуется в цифровые данные через АЦП. Т.к. сопротивление датчика при попадании на него света уменьшается, то и значение падающего на нем напряжения будет уменьшаться.
Фоторезистор, как следует из названия, имеет прямое отношение к резисторам, которые часто встречаются практически в любых электронных схемах. Основной характеристикой обычного резистора является величина его сопротивления. От него зависят напряжение и ток, с помощью резистора мы выставляем нужные режимы работы других компонентов. Как правило, значение сопротивления у резистора в одних и тех же условиях эксплуатации практически не меняется.
Вот в этом модуле уже есть все необходимые элементы для простого подключения фоторезистора к плате ардуино. В некоторых модулях реализована схема с компаратором и доступен цифровой выход и подстроечный резистор для управления.
В зависимости от того, в каком плече делителя мы поставили фоторезистор, на аналоговый вход будет подаваться или повышенное или уменьшенное напряжение. В том случае, если одна нога фоторезистора подключена к земле, то максимальное значение напряжения будет соответствовать темноте (сопротивление фоторезистора максимальное, почти все напряжение падает на нем), а минимальное – хорошему освещению (сопротивление близко к нулю, напряжение минимальное). Если мы подключим плечо фоторезистора к питанию, то поведение будет противоположным.
Сам монтаж платы не должен вызывать трудностей. Так как фоторезистор не имеет полярности, подключить можно любой стороной, к плате его можно припаять, подсоединить проводами с помощью монтажной платы или использовать обычные клипсы (крокодилы) для соединения. Источником питания в схеме является сам ардуино.
Скетч устройства на языке С++
01 | /*Управляем сервой в зависимости от освещенности | |
02 | Используем фотосопротивление, может быть любой аналоговый сенсор |
03 | */ | |
04 | #include <Servo.h> //Подключаем библиотеку Servo |
05 | Servo motor; | |
06 | int sensePin = 0;//Обьявляем 0 аналоговый пин |
07 | void setup() | |
08 | { | |
09 | analogReference(DEFAULT); //Объявляем диапазон чтения с аналогового порта.Необязательное |
10 | /* Будем смотреть вывод на сериальном мониторе с Ардуино, для чего его инициализируем |
11 | Заодно можно посмотреть диапазон работы датчика чтобы в этом диапазоне поворачивать серву*/ | |
12 | Serial.begin(9600); | |
13 | motor.attach(10); // Подключаем серву на 10 пин | |
14 | } | |
15 |
| |
16 | void loop() |
17 | { | |
18 | // Печатаем на монитор |
19 | Serial.println(analogRead(sensePin)); | |
20 | int val = analogRead(sensePin);// Создаем переменную val для чтения analogRead |
21 | val= constrain(val,230 ,699);// Ограничиваем диапазон работы датчика посмотрев его на мониторе |
22 | int motorAngl = map(val,699, 230, 180,0);//Преобразуем диапазон выдаваемый датчиком в диапазон углов сервы |
23 | motor.write(motorAngl);// Устанавливаем серву на угол который получаем через преобразование | |
24 | } | |
Бондин Максим 9 класс (15 лет)
Проект: «Умное устройство для школы»