Автоматизируем систему капельного полива
- Платформа: Iskra JS
- Язык программирования: JavaScript
- Тэги: Iskra JS, бочка, капельный полив, сад, огород, дача.
Что это?
Системы капельного полива — удобный и экономичный способ обеспечить должный уход растениям в садах и огородах. Вода из расходной ёмкости самотёком подводится к корням, увлажняя почву на грядках и в теплицах.
Однако, чтобы система работала эффективно, уровень воды в резервуаре должен постоянно поддерживаться в чётко определенных границах.
Специально для этого мы придумали и испытали устройство контроля уровня воды в бочке.
Что нам понадобится?
- Герметичный бокс, например 160×160×60
- Провод с вилкой на конце
- Розетка на стену
- Винтовые клеммники
- Бочка для отстаивания воды
- Насос для подкачки
Как собрать?
- Возьмите бочку и сделайте в ней 2 отверстия для датчиков уровня воды. Датчик максимального уровня должен находится в 10–15 сантиметрах от верхнего края, датчик минимального – примерно на середине бочки. Установите датчики в отверстия.
- Нижний датчик будет включать насос при низком уровне воды. Верхний датчик будет отключать насос. Так вы сможете поддерживать постоянный уровень воды и продлите срок службы насоса.
- Возьмите датчик скорости потока жидкости и подключите к нему шланг от насоса. Шланг должен иметь на конце гайку с трубной резьбой ½ дюйма. Обратите внимание, на корпусе датчика изображена стрелка, показывающая направление движения воды. В данном случае стрелка должна показывать в направлении от насоса к бочке. К другой стороне датчика присоедините такой же шланг с гайкой на конце.
- Возьмите Iskra JS и установите на неё Troyka Shield.
- Подключите реле в форм-факторе тройка модуль через трехпроводной шлейф мама-мама к Troyka Shield к пину
P5
. - Возьмите герметичный короб, разместите в нем Iskra JS и реле. Для подключения насоса и датчиков вам потребуется сделать отверстия в коробке. Сделайте их минимально возможного размера. Сделайте отверстия для шлейфов двух датчиков уровня, датчика скорости потока жидкости и розетки питания насоса.
- Проденьте в отверстия шлейфы от каждого датчика. Подключите шлейф от нижнего датчика уровня к пину
P1
, а верхнего — к пинуP2
. Шлейф датчика скорости потока жидкости подключите к пинуP3
. - Теперь подведите питание к компонентам устройства. Возьмите удлинитель с вилкой на конце и зафиксируйте контакты в клеммнике.
- Аккуратно разберите блок питания на 5 Вольт. Подключите проводами питание 220 Вольт, а USB-кабель USB — к Iskra JS.
- Возьмите настенную розетку. Разберите её, подведите к одному гнезду розетки провод от клеммника. Второй провод подключите через реле. Один провод на реле подключите к центральной клемме, а второй к клемме NC, что означает «нормально разомкнутый» — напряжение на розетке будет при установленном высоком логическом уровне на Iskra JS.
- Закройте крышку герметичной коробки и закрепите её на бочке.
- Подключите вилку насоса к розетке.
Алгоритм
- Проверяем начальные показания датчиков. Если воды мало, включаем насос.
- Если сработал верхний датчик уровня воды, отключаем насос.
- Если сработал нижний датчик уровня воды, включаем насос.
- Если насос включен, но скорость потока воды меньше ожидаемой, значит насос работает вхолостую. Отключаем насос во избежание перегрева и преждевременного выхода из строя.
Исходный код
- barrel.js
// подключаем модуль датчика уровня воды var level = require('@amperka/water-level'); // подключаем датчик на дне бочки var onBottom = level.connect(P1, {debounce: 3}); // подключаем датчик на крышке бочки var onTop = level.connect(P2, {debounce: 3}); // подключаем реле var pump = require('@amperka/relay').connect(P5); // ожидаемая скорость потока воды в литрах в минуту var normalSpeed = 10; // создаем объект датчика потока жидкости var flowSensor = require('@amperka/water-flow').connect(P3); var flowSensorTimer = null; var switchOn = function() { // включаем насос pump.turnOn(); if (flowSensorTimer === null) { // каждые 2000 миллисекунд проверяем скорость воды flowSensorTimer = setInterval(function() { // если скорость потока меньше обычной var speed = flowSensor.speed('l/min'); if (speed < normalSpeed) { // выключаем насос во избежание перегрева switchOff(); print('overheat'); } }, 2000); } }; var switchOff = function() { // выключаем насос pump.turnOff(); // выключаем опрос скорости потока if (flowSensorTimer !== null) { clearInterval(flowSensorTimer); flowSensorTimer = null; } }; // если датчик на дне бочки опустился if (onBottom.read() === 'down') { // включаем устройство switchOn(); print('barrel is empty'); } // событие: датчик на крышке бочки поднялся onTop.on('up', function () { print('water level is high'); // выключаем устройство switchOff(); }); // событие: датчик на дне бочки опустился onBottom.on('down', function () { // включаем устройство switchOn(); print('water level is low'); });
Демонстрация работы устройства
Что дальше?
К этому проекту можно легко добавить небольшой экран, отображающий время работы насоса и количество прокачанных литров воды. А ещё можно добавить датчик влажности почвы из проекта автополива растений или датчики освещенности и температуры — для реализации более сложных алгоритмов полива.