Автоматическая система по уходу за красноухими черепахами с дистанционным управлением

VI Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

Автоматическая система по уходу за красноухими черепахами с дистанционным управлением

Хиневич Д.Д. 1
1МБОУДО ДДТ "Дриада"
Хиневич Е.С. 1Рзаев Р.А. 1
1МБОУДО «ДДТ «Дриада»
Автор работы награжден дипломом победителя I степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

ВВЕДЕНИЕ

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

Целью проекта является разработка автоматической системы по уходу за красноухими черепахами.

Достижению этой цели способствует решение ряда задач:

Изучить периодическую печать и электронные источники информации по данной проблеме.

Сделать теоретический анализ по теме исследования.

Определить функции автоматической системы по уходу за красноухими черепахами.

Разработать автоматическую систему по уходу за черепахами.

Сформулировать рекомендации по уходу за черепахами с автоматической системой.

Объект исследования: содержание, уход и кормление красноухих черепах.

Предмет исследования: автоматическая система по уходу красноухих черепах.

Гипотеза. Предположим, что автоматическая система поможет людям содержать и ухаживать за красноухими черепахами.

Новизна работы заключается в том, что в настоящее время современные технологии автоматизации дошли и до аквариумов. В данной исследовательской работе разработана авторская система автоматического ухода за красноухими черепахами с возможностью дистанционного управления.

Методы исследования. В ходе нашего исследования были использованы такие методы, как: 1) работа с различными источниками информации: словари, журналы, научная литература, публицистическая литература, энциклопедии, интернет-источники; 2) наблюдение, анализ и сравнение; 3) описание, сбор, систематизация материала; 4) конструирование автоматической системы.

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

ГЛАВА I. ТЕОРЕТИЧЕСКИЙ ОБЗОР МАТЕРИАЛА ПО ТЕМЕ ИССЛЕДОВАНИЯ

О жизни красноухих черепах в домашних условиях

Красноухая черепаха (Trachemys scripta) также называемая желтобрюхой — самая распространенная среди любителей домашних черепах. К сожалению, такая популярность имеет и обратную сторону медали, огромное количество домашних красноухих черепах обречено на гибель или жизнь в неподходящих условиях.

Домашняя красноухая черепаха в домашних условиях очень выносливая и хорошо подходит начинающим. С одной стороны, они долго живут и часто становятся первым видом черепах у многих любителей, но с другой – люди, покупающие их зачастую и губят. Они не знаю, что красноухие черепахи нуждаются в воде и в суше (берег), на которой должно быть тепло и куда должны попадать УФ-лучи. При этом большую часть времени они проводят в воде, которая должна быть чистой, теплой и регулярно подмениваться. Как правило, все проблемы и болезни вызывают нерадивые хозяева, которые не знаю что грязная вода причина инфекций, без кальция панцирь станет кривой, без тепла и УФ-лампы черепаха не усваивает кальций и болеет!

Красноухие черепахи быстрые, сильные и могут быть агрессивными. Они с легкостью нападают на других черепах, и друг на друга. Также они известны своей индивидуальностью и харизмой, чем выгодно отличаются от других видов черепах. Они очень умелые, когда доходит дело до кормления и могут отбирать корм друг у друга. В дикой природе, будучи инвазивными видом, они вытесняют и уничтожают эндемиков так, что в той же Австралии находятся вне закона и истребляются.

Красноухие американские черепахи могут быть отличным домашним животным хотя бы потому, что аллергии на рептилий — это редкость. Сегодня красноухая черепаха стала частым подарком детям, однако нужно помнить, что дети не могут ухаживать за черепахой на должном уровне, более того, они довольно быстро могут охладеть к новой игрушке и забросить ее. А ее нужно кормить, менять воду, греть, даже мыть.

Содержание, уход и кормление красноухой черепахи

Для содержания красноухой черепахи нужно иметь: аквариум для красноухой черепахи (желательно на 200 литров), обогреватель для воды на 100Ватт, фильтр, лампа ультрафиолетовая для водных черепах с UVB 10%, лампа для обогрева, светильник, термометр, суша/берег/островок. Для содержания черепахи понадобится акватеррариум, так как ей нужна и суша, и вода, от 150 до 200 литров. Более просторный аквариум позволит оставаться черепахе более активной, здоровой. Если держать черепаху в тесноте, она не останется маленькой! Она станет больной, искривленной, но не маленькой!

Когда вы смотрите на маленькую черепаху, такие требования кажутся завышенными, но она подрастет и станет куда больше. Воды должно быть столько, чтобы черепаха могла в ней свободно переворачиваться, то есть больше чем ширина ее панциря.

Островок должен занимать не менее 25% поверхности вашего акватерарриума и отвечать таким требованиям: обогреваться, это главное назначение берега для черепахи. Температура на нем должна быть на 10 градусов выше, чем в воде. Слишком большая температура не годится, она может привести к гипертермии (перегреву) у черепахи:

В природе на берег черепахи спешат, чтобы погреться, и то же самое нужно сделать для них и в домашнем террариуме. Чтобы достичь желательной температуры в 30-35С (на панцире), нужно лампа располагалась над черепахой. Вам нужно будет регулярно смотреть на термометр, чтобы проверять параметры. Будьте осторожны, так как слишком близкорасположенная лампа может вызвать ожоги, особенно если вы содержите несколько водных черепах, они могут залезать друг на друга и быть ближе к источнику тепла.

Также не нужно забывать, что черепахи, ныряя в воду, поднимают брызги, и те, попав на цоколь, с легкостью его разрушат, так как он раскаленный. Так что светильник для черепах должен быть закрыт от воды и испарений. Лампа для обогрева, как и УФ лампа должна работать в течение всего дня, это 10–12 часов.

Правильное освещение и обогрев - это критически важные моменты в содержании водной красноухой черепахи в домашних условиях. В природе ей хватает солнечного света и тепла, чтобы вырабатывать все необходимые элементы. Лампа для обогрева, как и УФ лампа должна работать в течение всего дня, это 10-12 часов. Причем стекло или пластик задерживают существенную часть лучей и УФ-лампа должна висеть над черепахой. Для взрослых черепах используется лампа с UVB 10%.

Так как красноухая черепаха это водный вид, то большую часть времени она проводит в воде, так что следить за ее качеством очень важно. Черепахи едят, спят и опорожняются в воду, так что фильтровать, менять ее нужно часто. Грязная вода это один из источников дискомфорта, болезней и инфекций.

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

Воду необходимо отставить в течение суток минимум, чтобы из нее ушел хлор и она приобрела комнатную температуру. Температура воды в аквариуме с красноухой черепахой должна быть 22-28 °C. Чистота воды — это очень важно, так как черепахи и едят в ней и опорожняются. Очень быстро накапливаются вредные вещества-аммиак и нитраты, вода начинает вонять. Чтобы этого избежать, воду в аквариуме с красноухой черепахой подменивают раз или два в неделю.

Черепахи всеядные, питаются разнообразными видами корма. Кормить можно: искусственными кормами, кормами для аквариумных рыб, овощами, аквариумными растениями, насекомыми, рыбой, беспозвоночными. Кроме разнообразия, важно давать сбалансированную диету с высоким содержанием кальция. Как и у всех диких животных, которые живут дома, есть склонность к перееданию. Чтобы сделать кормление более сбалансированным, нужно добавить кальций и растительные корма и черепаха вполне будет счастлива.

Красноухие черепахи нуждаются в воде для глотания, так как слюну они не вырабатывают. Они могут брать корм на суше, но будут тащить его в воду, чтобы съесть. Можно использовать это себе во благо и кормить их в отдельной емкости, так вода в аквариуме будет оставаться чистой более долгое время. Свежие овощи необходимо давать черепахе всегда, вне зависимости от того проявляет ли она к ним интерес или нет. Хороший микс из овощей содержит в себе необходимую клетчатку, кальций, витамины А и К. Аквариумные растения также можно давать, тем более они похожи на те, что черепаха есть в природе. Особенно важно кормить растительными кормами взрослых и старых черепах! Их диета на 75% должна состоять из овощей и аквариумных растений.

Черепах до года нужно кормить искусственным кормом ежедневно, также можно ежедневно давать растительные корма, даже если она отказывается. А вот черепаху старше года, можно кормить через день или даже через два. Впрочем, растительными кормами, опять же можно кормить чаще.

Более 85% всех болезней красноухих черепах - это результат неправильного ухода, содержания и кормления, а чаще всего все сразу. Чистую воду и правильную температуру для домашнего питомца несложно поддерживать, как и создать нужные условия.

Проблемы халатности человека по уходу за домашними
питомцами

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

Уход за черепахой подразумевает постоянное поддержание нужного уровня жилищных условий, здоровья, питания и гигиены. Люди, которые готовы взять на себя ответственность, должны понимать, что и как они делают. Многие скажут, что кошку держать гораздо проще, нежели рептилий. В случае содержания черепашек необходимы специальная температура, определенный световой режим и «культура» кормления.

В силу своей занятости многие люди периодически забывают кормить черепах, менять воду, проверять температуру и т.д. Данные факты негативно влияют на жизнь красноухих черепах. В данном исследовании мы находим практическое решение проблемы - это разработка автоматической системы по уходу за красноухими черепахами.

Преимущество автоматической системы по уходу за

красноухими черепахами

Для того, чтобы разработать авторскую модель автоматической системы, мы изучили современные технологии автоматизации аквариумов. В основном, это известные марки иностранных фирм, как например: «AquaCoral».

Автоматизированный аквариум — это современный высокотехнологичный безопасный аквариум, выполненный по последнему слову техники, с использованием инновационных технологий. Управлять аквариумом очень легко.

Преимущества подобной системы:

Можно уезжать в отпуск и командировку - будучи уверенным в том, что состоянии аквариума контролируется с максимальной точностью.

Наслаждение аквариумом не только у себя дома, но и удаленно по вебкамере наблюдаете и при необходимости контролируете параметры воды.

полностью управляет аквариумом.

контролирует все параметры воды.

запускает аварийный насос (в случае поломки основного).

подключает резервное питание (в случае отключения электричества).

автоматически дозирует микроэлементы и корма, чистит скиммер и т.д.

ГЛАВА II. ОПИСАНИЕ ИССЛЕДОВАНИЯ И ЕГО РЕЗУЛЬТАТЫ

2.1. Этапы проведения исследования

Для проверки гипотезы исследование включало три этапа (таблица 1):

Таблица 1.

Этап

Задачи

Используемые методы

Сроки

1 этап.

Теоретическое исследование проблемы

- изучить научную, энциклопедическую литературу,

- официальные исследования;

- официальные сайты.

самостоятельное размышление;

изучение информационных источников;

поиск необходимой литературы.

март

2016 – август

2016

2 этап.

Практическое исследование проблемы

- Определить основные функции системы по уходу за красноухими черепахами;

- Разработать автоматическую систему по уходу за черепахами.

наблюдение;

анализ;

сравнение;

конструирование.

сентябрь

2017 г. – май 2018 г.

3 этап. Практическое использование результатов

- обобщить изученную информацию;

Разработать:

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

- информационный буклет.

систематизация;

отчет (устный, письменный, с демонстрацией материалов).

май

2018 г. – сентябрь 2018 г.

2.2. Основные функции авторской автоматической системы
по
уходу за красноухими черепахами

На систему автоматизации будут возложены следующие функции:

включение/отключение акватеррариумного светильника по расписанию для имитации требуемых внешних условий;

отключение акватеррариумного светильника при значительном внешнем освещении;

отключение водонагревателя при низком уровне воды в акватеррариуме для предотвращения выхода из строя водонагревателя (это может грозить даже поражением электрическим током обитателей акватеррариума);

принудительное отключение водонагревателя при превышении пороговой температуры воды (это может свидетельствовать о выходе из строя терморегулятора);

включение/отключение по расписанию акватеррариумного очистителя воды для поддержания чистоты воды и обеспечения акустического комфорта для людей;

выдача нескольких порций корма обитателям (кормление питомцев специалисты по уходу рекомендуют осуществлять в одно и тоже время);

возможность мониторинга и управления параметрами работы по сети интернет.

2.3. Разработка автоматической системы по уходу за черепахами

Для осуществления функций устройство должно обладать следующими функциональными блоками:

управляющий блок;

модуль измерения уровня воды;

датчик освещённости;

модуль реального времени;

блок коммутации осветителя;

блок коммутации водонагревателя;

блок коммутации водоочистителя;

блок для работы с сетью интернет.

Функциональная схема устройства изображена на рисунке 2.3.1.

В качестве управляющего узла была выбрана широко распространённая и достаточно дешёвая платформа Arduino Uno (см. рис. 2.3.2). Arduino Uno контроллер построен на интегральной микросхеме ATmega328. Платформа имеет 14 цифровых вход/выходов (6 из которых могут использоваться как выходы аппаратной широкоимпульсной модуляцией), 6 аналоговых входов, кварцевый генератор 16 МГц, разъем USB, силовой разъем, разъем ICSP и кнопку перезагрузки. Для программирования контроллер подключается к компьютеру посредством кабеля USB. Ресурсов Arduino Uno вполне достаточно для реализации проекта, кроме того она предоставляет возможность дальнейшего развития системы в широких пределах.

Рис. 2.3.1. Функциональная схема устройства

Рис. 2.3.2. Внешний вид ArduinoUno

Для обеспечения привязки событий ко времени в систему установлен модуль точного времени (см. рис. 2.3.3). Модуль энергонезависимый, так как обладает собственным дополнительным элементом питания (батарейкой в форм-факторе 1225). Данный модуль построен на базе микросхемы DS3231 и часового кварца. Он обеспечивает систему показаниями часов с точностью до секунды и позволяет системе осуществлять функции по расписанию. Схема подключения модуля точного времени приведена на рисунке 2.3.4. Питание модулянапряжением +5 В. Два других вывода подключаются к любым аналоговым портам Arduino, мы подключим к А4 и А5.

Рис. 2.3.3. Внешний вид модуля точного времени

Рис. 2.3.4. Схема подключения модуля точного времени

Модуль измерения уровня воды должен обеспечивать измерение уровня водяного зеркала. Эту задачу можно решить, используя ультразвуковой датчик расстояния, расположив его аквариумом, перпендикулярно водной поверхности. В качестве ультразвуковго датчика расстояния будем использовать ультразвуковой дальномера HC-SR04. Его действие основано на принципе эхолокации. Он излучает звуковые импульсы в пространство и принимает отражённый от препятствия сигнал. По времени распространения звуковой волны к препятствию и обратно определяется расстояние до объекта. Точность показаний составляет 0,3 см.

Питание ультразвукового дальномера осуществляется напряжением +5 В. Два других вывода подключаются к любым цифровым портам Arduino, мы подключим к 11 и 12.

Рис. 2.3.5. Внешний вид ультразвукового дальномера HC-SR04.

Рис. 2.3.6. Схема подключения ультразвукового дальномера.

Модуль освещённости должен оценивать уровень освещения помещения для своевременного отключения избыточного освещения акватеррариума. Эту задачу можно решить, используя фоторезистор (см. рис. 2.3.7), расположив его в блоке управления, избегая засвета от осветительной лампы акватеррариума. Фоторезистор (или LDR) VT90N2 — компонент, меняющий сопротивление в зависимости от количества света, падающего на него. В полной темноте он имеет максимальное сопротивление в сотни килоом, а по мере роста освещённости сопротивление уменьшается до десятков килоом. Фоторезистор подключим, организовав делитель напряжения ко входу А0 (см. рис. 2.3.8).

Рис. 2.3.7. Внешний вид фоторезистора.

Рис. 2.3.8. Схема подключения фоторезистора.

Коммутация исполнительных устройств осуществляется посредством реле 845-2С-С (см. рис. 2.3.9). Управление реле осуществляется с любого цифрового выхода платы Arduino. Мы подключим реле к выводам 3, 4 и 5. Подключение управляющей катушки реле (вывод 2 реле) осуществляется через транзистор с токоограничивающим резистором (см. рис. 2.3.10). Вывод 1 реле подключается на «землю». Переменное напряжение питания внешних устройств 220В подаётся на выводы 5 и 6 реле. Осветительная лампа и водонагреватель подключаются к реле по нормально разомкнутой схеме (выводы 7 и 8 реле), а водонагреватель по нормально замкнутой схеме (выводы 3 и 4 реле).

Рис. 2.3.9. Внешний вид реле.

Рис. 2.3.10. Схема подключения реле.

Для реализации модуля кормления используется сервопривод с прикреплённой к нему небольшой пластиковой ёмкостью, установленный на краю акватеррариума. Сервопривод это механизм с электромотором, который можно попросить повернуться в заданный угол и удерживать это положение. В качестве сервопривода будем использовать микросервопривод FITECFS90. Питание сервопривода осуществляется от 5 вольт, управляющий вход сервопривода подключим на цифровой вход с широкоимпульсной модуляцией – 11 (см.рис. 2.3.12).

Рис. 2.3.11. Внешний вид микросервопривода.

Рис. 2.3.12. Схема подключения микросервопривода.

Для реализации модуля связи с сетью интернет используется плата Ethernet Shield, основаная на чипе Wiznet W5500, который поддерживает TCP и UDP-протоколы. Ethernet Shield производится в России компанией Амперка. Для соединения с локальной сетью используется стандартный разъём 8P8C (RJ45). Распиновка платы соответствует стандарту Rev3. Для коммуникации с управляющей платой используется стандартный интерфейс SPI. Ethernet Shield занимает пины MOSI, MISO, SCK, а также 10-й в качестве CS для чипа W5500.

Рис. 2.3.13. Внешний вид платы Ethernet Shield.

Устройство было смонтировано в корпусе от старого модема Zyxel. На верхнюю сторону установлены три бытовых розетки для подключения исполнительных устройств (водонагревателя, водоочистителя, осветительно-нагревательной лампы), которые подключены к соответствующим реле. Для удобства подключения разъём для программирования системы и разъём для подключения к сети интернет были выведены наружу с левой боковой стороны.

Питание системы осуществляется от сети 220 вольт через импульсный блок питания с выходным напряжением 9 В и током 1000 мА.

Была разработана управляющая программа для осуществления функционирования системы. Текст программы приведён в приложении 2. На рисунке 2.3.14 изображено окно мониторинга состояния системы, открытое на компьютере в локальной сети.

Рис. 2.3.14. Окно мониторинга системы.

Управляющая программа обеспечивает вывод на странице «Монитор состояния террариума» текущих значений времени, освещённости и расстояния до водного зеркала, а также состояние (включен/выключен) исполнительных механизмов – водного фильтра, нагревателя и системы освещения. Кроме того, отображаются радиокнопки, отображающие текущий режим работы и позволяющие управлять режимами работы исполнительных механизмов: доступно ручное принудительное включение, ручное принудительное выключение и автоматический режим работы.

При нажатии на кнопку «::Настройка::» управляющая программа открывает страницу «Настройка параметров работы системы». На этой странице можно задать временные и численные параметры, используемые для реализации автоматического режима управления исполнительными устройствами. На рисунке 2.3.15 изображено окно задания параметров работы системы, открытое на компьютере в локальной сети.

Рис. 2.3.15. Окно настройки параметров системы.

2.4. Рекомендации по уходу за красноухими черепахами

с использованием автоматической системой

Уход за акватеррариумом с использованием разработанного устройства облегчается. Система берёт на себя выполнение простых, но необходимых функций, и осуществляет их выполнение в автоматическом режиме без участия человека. Владелец должен подключить устройства к системе управления, задать расписание работы освещения акватеррариума и водоочистителя, а также время осуществления кормления.

На владельца акватеррариума возлагается необходимость закладки в систему ежедневной порции корма, а также обязанность ежедневно контролировать работу системы (необходимо проверять индикатор работы водонагревателя и при аварийном его отключении – пополнить объём воды в акватеррариуме).

2.5. Дальнейшее развитие системы

Для улучшения работы в ближайшем будущем на систему ухода за акватеррариумом будут возложены следующие функции:

принудительное отключение водонагревателя при превышении пороговой температуры воды (это может свидетельствовать о выходе из строя терморегулятора);

вывод текущих показателей работы и расписаний включения/отключения на дисплей;

информирование хозяина акватеррариума сообщениями на мобильный телефон о проблемах (выход за установленные режимы работы) для оперативного устранения проблем;

отсылка хозяину снимка состояния акватеррариума на мобильный телефон;

Для выполнения этих функций систему нужно будет дополнить:

водостойким датчиком температуры,

дисплеем для обеспечения вывода информации;

кнопками для обеспечения интерактивного ввода значений в систему;

модулем фотокамеры для производства фотосъёмки по запросу.

Также планируется оснастить систему источником резервного питания.

ЗАКЛЮЧЕНИЕ

В заключении хотелось бы отметить, что цель, поставленная в начале исследования, достигнута - мы разработали и апробировали систему автоматического ухода за красноухими черепахами.

Решили следующие задачи:

Изучили периодическую печать и электронные источники информации по данной проблеме.

Сделали теоретический анализ по теме исследования.

Определили функции автоматической системы по уходу за красноухими черепахами.

Разработали автоматическую систему по уходу за черепахами.

Сформулировали рекомендации по уходу за красноухими черепахами с автоматической системой с дистанционным управлением.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

Блум Джереми. «Изучаем Arduino» пер. с. англ. – СПБ.: БХВ-Петербург, 2015.

Иго Т. «Arduino, датчики и сети для связи устройств» пер. с англ. – 2-е изд. – СПБ.: БХВ-Петербург, 2015.

Как правильно ухаживать за черепахой // http://ru.wikihow.com/ ((Дата обращения: 28.05.2016 г.)

Как содержать черепаху в домашних условиях // http://turtle-home.net/soderzhanie-cherepah/http://turtle-home.net/soderzhanie-cherepah/ (Дата обращения: 22.05.2016 г.)

Кособоров А.С., Затылкин А.В., Юрков Н.К. Автоматизированная система управления микроклиматом в аквариуме // Новые информационные технологии в автоматизированных системах. №17. 2014.

Кочетов С. Аквариум. Домашний аквариум и террариум// https://www.aqa.ru/forum/literatura---akvarium-lyubitelya-staralsya-podbirat-162976-page1(Дата обращения: 29.08.2016 г.)

Плат Ч. «Электроника для начинающих» пер. с англ. – СПБ.: БХВ-Петербург, 2015.

Программно-управляемые системы автоматизированной сборки // http://www.academia-moscow.ru/catalogue/149/37702/(Дата обращения: 29.08.2016 г.)

Сборка аквариума своими руками http://usamodelkina.ru/4003-sborka-akvariuma-svoimi-rukami.htm (Дата обращения: 29.08.2016 г.)

Черепаха дома // http://cherepahi.ru/cherepaxa-doma/112-obshhenie-s-cherepaxoj-i-priruchenie (Дата обращения: 26.05.2016 г.)

Электронные системы контроля параметров воды // http://www.aquariumhome.ru/shop/239/ (Дата обращения: 29.08.2016 г.)

ПРИЛОЖЕНИЕ №1

Ход работы

Акватеррариум. Вид сверху.

Акватеррариум. Вид сбоку.

Водоочиститель.

Водонагреватель.

Осветительно-нагревательная лампа (галогенная).
Во включенном и выключенном состоянии.

Отладка схемы подключения реле

Начало процесса монтажа устройства управления в корпус

Основной блок управления.

Система управления в сборе.

ПРИЛОЖЕНИЕ №2

Управляющая программа

#include <Servo.h> // Подключаем библиотеку Servo

#include <Ethernet2.h> // Подключаембиблиотеку Ethernet2

#include <DS3231.h> // Подключаем библиотеку для

// работы с модулем времени

#include <Wire.h> // Подключаем библиотеку для

// работы с шиной I2C

// mac-адрес платы и ip-адрес сервера

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

// Инициализируем сервер на адресе 192.168.1.100 порт 80

IPAddress ip(192, 168, 1, 100);

EthernetServer server(80);

int pinStateH = 0; // Состояниенагревателя

int pinStateL = 0; // Состояние осветителя

int pinStateF = 0; // Состояние пина фильтра

int UStateH = 2; // Режим работы нагревателя

int UStateL = 2; // Режим работы осветителя

intUStateF = 2; // Режим работы фильтра

intUParam = 1; // Вспомогательная переменная

int tm1h = 9; int tm1m = 30; // Время кормления

int tm21h = 8; int tm21m = 30; // Время включения света

int tm22h = 21; int tm22m = 45; // Время вЫключения света

int tm31h = 9; int tm31m = 0; // Время включения фильтра

int tm32h = 21; inttm32m = 30; // Время вЫключения фильтра

String getData = "";

boolean startGet = false;

int val; // Данныедатчикасвета

// Инициализация модуля точного времени

DS3231 Clock;

bool Century=false;

bool h12;

bool PM;

byte ADay, AHour, AMinute, ASecond, ABits;

bool ADy, A12h, Apm;

Servo myservo; // Объявляемобъект myservo длясервопривода

Servo myservo2; // Объявляем объект myservo для сервопривода 2

Servo myservo3; // Объявляем объект myservo для сервопривода 3

const int trigPin = 3; // Ультразвуковой датчик

const int echoPin = 5; // Ультразвуковой датчик

int distance=0; // Результат измерений ультразвуковым датчиком

// Руками задаём пороговые значения:

int PorogL = 400; // Пороговое значение освещённости

int PorogW = 10; // Пороговое расстояние до воды

int H=0;

int M=0;

//-------------------------------------------------------------------

void setup() {

pinMode(12, OUTPUT); // Релеводоочистителя

pinMode(8, OUTPUT); // Реле освещения

pinMode(7, OUTPUT); // Реле водонагревателя

myservo.attach(6); // Сервопривод 1

myservo2.attach(11); // Сервопривод 2

myservo3.attach(9); // Сервопривод 3

pinMode(trigPin, OUTPUT); // триггер - выходной пин

pinMode(echoPin, INPUT); // эхо - входной

// Подготовка к работе

digitalWrite(7, LOW); // Включение водонагревателя

digitalWrite(8, LOW); // Выключение освещения

digitalWrite(12, LOW); // Выключение водоочистителя

myservo.write(130); // устанавливаем сервопривод в крайнее правое положение

// инициализациибиблиотеки Ethernet server

Ethernet.begin(mac, ip);

server.begin();

// инициализации I2C interface

Wire.begin();

Serial.begin(9600);

}

//-------------------------------------------------------------------

// Основная программа

//-------------------------------------------------------------------

voidloop()

{

if (millis() % 100 == 0) { // если прошла 0.1 секунда

H=Clock.getHour(h12, PM);

M=Clock.getMinute();

myservo.write(130); // устанавливаем сервопривод в крайнее правое положение

myservo2.write(130); // устанавливаем сервопривод 2 в крайнее правое положение

myservo3.write(130); // устанавливаем сервопривод 3 в крайнее правое положение

//---------------------------------------------------------------------------------

// Руками задаём время включения и выключения осветителя в часах H и минутах M

val = analogRead(A0); // показания датчика освещённости

if (UStateL==2)

{

if ((((H >= tm21h)and(M>=tm21m)) or ((H <= tm22h)and(M <= tm22m)) ) and (val > PorogL))

{pinStateL=1;} // Включение освещения

else

{pinStateL=0;}; // Выключение освещения

}

else

{pinStateL=UStateL;};

digitalWrite(8, pinStateL);

//--------------------------------------------------------------------------------

distance = getDistance(); // получаем дистанцию с ультразвукового датчика

if (UStateH==2)

{

if (distance > PorogW)

{pinStateH = 0;} // !!!Выключениеводонагревателя

else

{pinStateH = 1;}; // !!!Включение водонагревателя

}

else

{pinStateH=UStateH;};

digitalWrite(7, !(pinStateH==1) );

//---------------------------------------------------------------------------------

// Задаём время включения и выключения фильтра в часах H и минутах M

if (UStateF==2)

{

if ( ((H>=tm31h)and(M>=tm31m)) or ((H<=tm32h)and(M<=tm32m)) )

{pinStateF = 1;} // Включение водоочистителя HIGH

else

{pinStateF = 0;}; // Выключение водоочистителя

}

else

{pinStateF=UStateF;};

digitalWrite(9, pinStateF);

//-------------------------------------------------------------------

// Ззадаём время кормления в часах H и минутах M

if ( (H==tm1h) and (M==tm1m) )

//if ((millis() >= 180000) and ((millis() <= 190000))) // еслипрошлo 3 min

{

//Serial.println("foood");

myservo.write(10);

// устанавливаем сервопривод в крайнее левое положение

delay(1000);

};

}

//-------------------------------------------------------------------

// ожиданиеподключенияклиентов

EthernetClient client = server.available();

if (client)

{

boolean currentLineIsBlank = true;

while (client.connected())

{

if (client.available())

{

char c = client.read();

if (startGet == true) // данныепосле '?'

getData += c;

if (c == '?') // начало сбора данных после '?'

startGet = true;

if (c == '\n' && currentLineIsBlank) // окончаниеполучения

{

if (getData.length() < 1) // запрос без get-данных (начало работы)

{

//UStateF = 2; UStateH = 2; UStateL = 2;

}

else

// запроссданными

{

if (getData[0]=='p')

// переданы параметры настройки

{

UParam=1; // Переходнамонитор

PorogW = ( int(getData[4]) - 48)*10 + (int(getData[5]) - 48 );

PorogL = ( (int(getData[11]) - 48)*100 + (int(getData[12]) - 48)*10 + (int(getData[13]) - 48) );

int a=14;

// Определяем время кормления

while (getData[a]!='=') {a=a+1;};

a=a+1;

if (getData[a+1]=='&')

{tm1h=int(getData[a]) - 48;}

else

{tm1h=(int(getData[a]) - 48)*10+(int(getData[a+1]) - 48); };

while (getData[a]!='=') {a=a+1;};

a=a+1;

if (getData[a+1]=='&')

{tm1m=int(getData[a]) - 48;}

else

{tm1m=(int(getData[a]) - 48)*10+(int(getData[a+1]) - 48); };

// Определяем время включения света

while (getData[a]!='=') {a=a+1;};

a=a+1;

if (getData[a+1]=='&')

{tm21h=int(getData[a]) - 48;}

else

{tm21h=(int(getData[a]) - 48)*10+(int(getData[a+1]) - 48); };

while (getData[a]!='=') {a=a+1;};

a=a+1;

if (getData[a+1]=='&')

{tm21m=int(getData[a]) - 48;}

else

{tm21m=(int(getData[a]) - 48)*10+(int(getData[a+1]) - 48); };

// Определяем время вЫключения света

while (getData[a]!='=') {a=a+1;};

a=a+1;

if (getData[a+1]=='&')

{tm22h=int(getData[a]) - 48;}

else

{tm22h=(int(getData[a]) - 48)*10+(int(getData[a+1]) - 48); };

while (getData[a]!='=') {a=a+1;};

a=a+1;

if (getData[a+1]=='&')

{tm22m=int(getData[a]) - 48;}

else

{tm22m=(int(getData[a]) - 48)*10+(int(getData[a+1]) - 48); };

// Определяем время включения фильтра

while (getData[a]!='=') {a=a+1;};

a=a+1;

if (getData[a+1]=='&')

{tm31h=int(getData[a]) - 48;}

else

{tm31h=(int(getData[a]) - 48)*10+(int(getData[a+1]) - 48); };

while (getData[a]!='=') {a=a+1;};

a=a+1;

if (getData[a+1]=='&')

{tm32m=int(getData[a]) - 48;}

else

{tm32m=(int(getData[a]) - 48)*10+(int(getData[a+1]) - 48); };

// Определяем время вЫключения фильтра

while (getData[a]!='=') {a=a+1;};

a=a+1;

if (getData[a+1]=='&')

{tm32h=int(getData[a]) - 48;}

else

{tm32h=(int(getData[a]) - 48)*10+(int(getData[a+1]) - 48); };

while (getData[a]!='=') {a=a+1;};

a=a+1;

if (int(getData[a+1])=='0')

{tm32m=int(getData[a]) - 48;}

else

{tm32m=(int(getData[a]) - 48)*10+(int(getData[a+1]) - 48); };

};

if (getData[0]=='r')

// ручное управление

{

UStateF = int(getData[5]) - 48;

UStateH = int(getData[12]) - 48;

UStateL = int(getData[19]) - 48;

};

if (getData[0]=='s')

{

UParam=2;

};

}

// отправказаголовковклиенту

client.println("HTTP/1.1 200 OK");

client.println("Content-Type: text/html");

client.println("Connection: close");

if (UParam==1)

{

// Страница 1 ----------------------------------------------------------------------------

// Страница 1 ----------------------------------------------------------------------------

client.println("Refresh: 1"); // refresh the page automatically every 1 sec

client.println();

// формированиестраницыответа

client.println("<!DOCTYPE HTML>");

client.println("<html>");

client.println("<head><meta charset=\"UTF-8\"><title>Мониторсостояния</title></head>");

client.println("<h3 align='center'>Мониторсостояниятеррариума");

client.println("<form method='get'>");

client.println("<p>Текущеевремя:");

client.println(H);

client.println(":");

client.println(M);

client.println("<P> Освещённость: ");

client.println(val);

client.println(" ед.");

client.println(" (порог: ");

client.println(PorogL);

client.println(" ед.)</P>");

client.println("<P> Расстояниедоводы: ");

client.println(distance);

client.println(" см.");

client.println(" (порог: ");

client.println(PorogW);

client.println(" см.)</P>");

client.println("<P> Фильтр");

if (pinStateF == 1) //

{client.println("<font color=\"green\"> включен</font>");}

else

{client.println("<font color=\"red\"> отключен</font>");}

client.println("</P>");

client.println("<P> Нагреватель");

if (pinStateH == 1) //

{client.println("<font color=\"green\"> включен</font>");}

else

{client.println("<font color=\"red\"> отключен</font>");}

client.println("</P>");

client.println("<P> Освещение");

if (pinStateL == 1) //

{client.println("<font color=\"green\"> включено</font>");}

else

{client.println("<font color=\"red\"> отключено</font>");}

client.println("</P>");

client.println("<P>");

// реле 1

client.print("<div>");

client.print("Авто <input type='radio' name='rel1' value=2 onclick='document.getElementById(\"submit\").click();' ");

if (UStateF == 2) client.print("checked"); client.println(">");

client.print("Выкл <input type='radio' name='rel1' value=0 onclick='document.getElementById(\"submit\").click();' ");

if (UStateF == 0) client.print("checked"); client.println(">");

client.print("Вкл <input type='radio' name='rel1' value=1 onclick='document.getElementById(\"submit\").click();' ");

if (UStateF == 1) client.print("checked"); client.println("> - фильтр");

client.println("</div>");

client.println("<P>");

// реле 2

client.print("<div>");

client.print("Авто <input type='radio' name='rel2' value=2 onclick='document.getElementById(\"submit\").click();' ");

if (UStateH == 2) client.print("checked"); client.println(">");

client.print("Выкл <input type='radio' name='rel2' value=0 onclick='document.getElementById(\"submit\").click();' ");

if (UStateH == 0) client.print("checked"); client.println(">");

client.print("Вкл <input type='radio' name='rel2' value=1 onclick='document.getElementById(\"submit\").click();' ");

if (UStateH == 1) client.print("checked"); client.println("> - нагреватель");

client.println("</div>");

client.println("<P>");

// реле 3

client.print("<div>");

client.print("Авто <input type='radio' name='rel3' value=2 onclick='document.getElementById(\"submit\").click();' ");

if (UStateL == 2) client.print("checked"); client.println(">");

client.print("Выкл <input type='radio' name='rel3' value=0 onclick='document.getElementById(\"submit\").click();' ");

if (UStateL == 0) client.print("checked"); client.println(">");

client.print("Вкл <input type='radio' name='rel3' value=1 onclick='document.getElementById(\"submit\").click();' ");

if (UStateL == 1) client.print("checked"); client.println("> - освещение");

client.println("</div>");

client.println("<P> Времякормления: ");

client.println(tm1h);

client.println(":");

client.println(tm1m);

client.println("</P>");

client.println("<P>");

client.println("<button type=\"button\" onclick='location.href=\"?s\"' >::Настройки::</button>");

client.println("</P>");

client.println("<input type='submit' id='submit' style='visibility:hidden;' value='Refresh'>");

client.println("</h3>");

client.println("</form>");

client.println("</html>");

}

else

{

// Страница 2 ----------------------------------------------------------------------------

// Страница 2 ----------------------------------------------------------------------------

client.println();

// формирование страницы ответа

client.println("<!DOCTYPE HTML>");

client.println("<html>");

client.println("<head><meta charset=\"UTF-8\"><title>Мониторсостояния</title></head>");

client.println("<h3 align='center'>Настройка параметров работы системы");

client.println("<form method='get'>");

client.println("<p>Текущеевремя:");

client.println(H);

client.println(":");

client.println(M);

client.println("<P> Пороговое расстояние до воды: ");

client.println("<input type=\"number\" name='prw' min=10 max=30 value=");

client.println(PorogW);

//client.println(" onclick='document.getElementById(\"submit\").click();'>");

client.println(" см.</P>");

client.println("<P> Пороговоезначениеосвещённости: ");

client.println("<input type=\"number\" name='prl' min=100 max=999 value=");

client.println(PorogL);

client.println(" ед.</P>");

client.println("<P> Времякормления: ");

client.println("<input type=\"number\" name='tm1h' min=0 max=23 value=");

client.println(tm1h, DEC);

client.println(">ч. ");

client.println("<input type=\"number\" name='tm1m' min=0 max=59 value=");

client.println(tm1m, DEC);

client.println(">м. ");

client.println("</P>");

client.println("<P> Освещениевключаемв: ");

client.println("<input type=\"number\" name='tm21h' min=0 max=23 value=");

client.println(tm21h);

client.println(">ч. ");

client.println("<input type=\"number\" name='tm21m' min=0 max=59 value=");

client.println(tm21m);

client.println(">м. ");

client.println("<P> Освещение выключаем в: ");

client.println("<input type=\"number\" name='tm22h' min=0 max=23 value=");

client.println(tm22h);

client.println(">ч. ");

client.println("<input type=\"number\" name='tm22m' min=0 max=59 value=");

client.println(tm22m);

client.println(">м. ");

client.println("</P>");

client.println("<P> Фильтрвключаемв: ");

client.println("<input type=\"number\" name='tm31h' min=0 max=23 value=");

client.println(tm31h);

client.println(">ч. ");

client.println("<input type=\"number\" name='tm31m' min=0 max=59 value=");

client.println(tm31m);

client.println(">м. ");

client.println("<P> Фильтр выключаем в: ");

client.println("<input type=\"number\" name='tm32h' min=0 max=23 value=");

client.println(tm32h);

client.println(">ч. ");

client.println("<input type=\"number\" name='tm32m' min=0 max=59 value=");

client.println(tm32m);

client.println(">м. ");

client.println("</P>");

client.println("<P>");

client.println("<input type='submit' id='submit' value='Отправить'>");

client.println("</P>");

client.println("</h3>");

client.println("</form>");

client.println("</html>");

};

break;

}

if (c == '\n')

{

currentLineIsBlank = true;

}

else if (c != '\r')

{

currentLineIsBlank = false;

}

}

}

}

// задержка для получения клиентом данных

delay(1);

// закрыть соединение

client.stop();

startGet=false;

getData="";

} // окончание основной программы

//-------------------------------------------------------------------

// Определение дистанции до объекта в см

long getDistance()

{

long distacne_cm = getEchoTiming() * 1.7 * 0.01;

return distacne_cm;

}

//-------------------------------------------------------------------

// Определение времени задержки

longgetEchoTiming()

{

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH); // генерируемимпульсзапуска

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

// определениенапине echoPin длительностиуровня HIGH, мксек:

long duration = pulseIn(echoPin, HIGH);

return duration;

}

Просмотров работы: 41