Клапан автозаполнения на базе arduino своими руками

Привет! ????

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

Альтернативным способом терморегуляции в помещении является открытие и закрытие заслонки вентиляционной шахты при определенной температуре воздуха.

История создания

У меня в доме есть холодная веранда, в которой никогда не было отопления, да и, в принципе, не планировалось. И однажды встал вопрос об установке фермы (майнера) для добычи криптовалюты.

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

Получается двух зайцев одним выстрелом – и биткойны добываются, и веранда обогревается за счет выделяемого фермой тепла ????

Клапан автозаполнения на базе arduino своими рукамиКотаны первыми заценили новый “обогреватель” ????

Ночью, когда на улице температура опускалась до +5, помещение прогревалось до +50 градусов.

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

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

Клапан автозаполнения на базе arduino своими рукамиСхема движения воздуха в помещении

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

  • Коротко о получившемся устройстве рассказано в этом видео.
  • А теперь рассмотрим автоматическую заслонку более подробно

Устройство заслонки

Основным элементом автоматической заслонки является сервопривод, позволяющий поворачивать рычаг заслонки на заданный угол. Логика устройства реализована на базе модуля Arduino Nano 3.0.

Для питания системы используется импульсный источник напряжения 9 Вольт. Измерение температуры производится при помощи делителя напряжения с термистором NTC 25° 100 Ком. Для ручного управления заслонкой предусмотрена специальная кнопка.

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

Клапан автозаполнения на базе arduino своими рукамиУстройство автоматической заслонки

Сервопривод

Сервопривод Tower Pro Sg90, входящий в большинство стартовых наборов Ардуино, идеально подошел для главной роли в данном устройстве. Для его установки в крышке корпуса были высверлены 2 соседних отверстия диаметрами 11 и 6 мм.

Клапан автозаполнения на базе arduino своими рукамиСервопривод Tower Pro Sg90

Логический модуль

Мозговым центром системы стал модуль Arduino Nano 3.0, компактные размеры которого позволяют интегрировать его практически в любое бытовое устройство, а возможности контроллера Atmega328 с большим запасом удовлетворяют вычислительным потребностям системы и реализуют выполнение всех необходимых операций ввода/вывода.

Клапан автозаполнения на базе arduino своими рукамиArduino Nano 3.0 и Tower Pro Sg90 в корпусе разветвительной коробки

Также большим плюсом данного модуля является наличие порта mini USB, что позволяет легко и быстро изменить прошивку устройства (схожий по размерам модуль Arduino Pro Mini не имеет USB порта, и прошивать его несколько сложнее, чем Arduino Nano 3.0). В крышке разветвительной коробки сделано отверстие для порта mini USB, позволяющее осуществить подключение Arduino к компьютеру для выполнения отладочных работ готового устройства, а также изменения температурных условий открытия и закрытия заслонки.

Клапан автозаполнения на базе arduino своими рукамиMini USB Arduino Nano 3.0

Источник питания

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

Клапан автозаполнения на базе arduino своими рукамиИмпульсный блок питания 9В и 3-pin разъем

Для соединения с модулем ардуино использован 3-pin разъем от компьютерного вентилятора.

Клапан автозаполнения на базе arduino своими рукамиНачинка автоматической заслонки

Датчик температуры

  1. Для получения информации о температуре воздуха используется датчик температуры, основанный на делителе напряжения, схема которого представлена ниже.
  2. Клапан автозаполнения на базе arduino своими руками
  3. Изначально использовался терморезистор 10 Ком, но из-за самонагрева данные о температуре были неточными и пришлось заменить его на термистор 100 Ком, у которого самонагрев значительно меньше.

Индикация и управление

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

Кнопка управления установлена на боковой поверхности крышки корпуса. При работе устройства в режиме ручного управления однократное нажатие на кнопку меняет положение заслонки с открытого на закрытое и обратно. Удержание кнопки в течение 3 секунд меняет режим работы заслонки с автоматического на ручной и обратно.

Клапан автозаполнения на базе arduino своими рукамиАвтоматическая заслонка на базе Arduino

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

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

Автоматическая заслонка – схема подключения Arduino

На практике все выглядит вот так:

Электронная часть автоматической заслонки

В качестве “массы” (GND) я использовал корпус USB-порта.

Программа (скетч) для Arduino

Теперь самое главное – правильно написанная программа (скетч Arduino) для измерения температуры и управления положением заслонки.

#include //библиотека сервопривода //КНОПКА #define btnPin 2 //пин на плате ардуино byte lastState=0; //предыдущее значение кнопки byte newState=0; //текущее значение кнопки byte holdtime=0; //время удержания кнопки #define MODECHANGETIME 12 //время нажатия смены режима //ЗАСЛОНКА //режимы управления заслонкой #define m_AUTO 0 //автоматический #define m_MANUAL 1 //ручной /////////////////// #define z_OPEN 0 //состояние заслонки — открыта #define z_CLOSE 1 //состояние заслонки — закрыта #define a_OPEN 10 //угол открытого положения #define a_CLOSE 60 //угол закрытого положения int z_state=z_OPEN; //текущее положение заслонки byte mode=m_AUTO; //Режим управления — ручной или автоматический. По умолчанию автоматический. //СЕРВА #define servoPin 3 //пин сервопривода Servo servo; //объявляем переменную servo типа Servo byte angle=a_OPEN; //текущий угол поворота сервы //ТЕМПЕРАТУРНЫЕ ЗНАЧЕНИЯ #define t_OPEN 30 //температура открытия заслонки #define t_CLOSE 27 //температура закрытия заслонки float currentTemp=0; // текущая температура //ТЕРМОРЕЗИСТОР #define R_PIN A0 float R_B=3950; float R_T0=25; float R_R0=100000; //100 kOm float R_R1=0; //сопротивление терморезистора (для отладочных целей) int R_ADC=0; //значение АЦП //ПОСТОЯННЫЙ РЕЗИСТОР float R_R2=100000; //100 kOm //ПРОЧЕЕ #define diodePin 4 //сигнальный светодиод int blinking=0; //для мигания диодом в ручном режиме управления заслонкой void setup() {  //погасим штатный диод на 13 выходе  pinMode(13,OUTPUT);  pinMode(diodePin,OUTPUT);  pinMode(btnPin,INPUT);  pinMode(R_PIN,INPUT);    //подтянули резистор  digitalWrite(btnPin,HIGH);  Serial.begin(9600);    //привязываем привод к выводу на плате  servo.attach(servoPin);  //установим начальный угол поворота  servo.write(angle); } void loop() {  //обработаем нажатие кнопки  newState=digitalRead(btnPin);  //если кнопка удерживается  if (newState==0 && lastState==newState){    holdtime++;    if (holdtime>MODECHANGETIME) {      holdtime=0;      chMode(); //меняем режим    }  }  //смена позиции заслонки если выбран ручной режим  if (mode==m_MANUAL && newState==0 && lastState==1){    chStateManual(); //меняем угол заслонки  }      //СЧИТЫВАЕМ ТЕМПЕРАТУРУ  R_ADC=analogRead(R_PIN);    //R_R1=(R_R2*(1023-R_ADC)/R_ADC); //для обратного подключения (+ -) к делителю напряжения, когда с ростом температуры значение АЦП растет  R_R1=(R_ADC*R_R2)/(1023-R_ADC); //когда с ростом температуры значение АЦП падает  currentTemp=1/((log(R_R1)-log(R_R0))/R_B+(1/(R_T0+273)))-273;  Serial.println(R_R1);  Serial.println(«T=»+String(currentTemp));    lastState=newState;      if (mode==m_AUTO){    digitalWrite(diodePin,HIGH);       //ОТКРЫТИЕ / ЗАКРЫТИЕ заслонки в зависимости от температуры в автоматическом режиме      if (currentTemp>=t_OPEN && z_state==z_CLOSE)    {      openAuto();    }      if (currentTemp

Источник: https://eanik.ru/2017/10/05/automatic-shutter-arduino/

Система управления поливом на Arduino | LAZY SMART

  • В предыдущей статье мы рассказали об организации автоматического полива на дачном участке с возможностью мониторинга состояния и управления системой через интернет. Вот так выглядит поливальная установка:
  • Клапан автозаполнения на базе arduino своими руками
  • В этот раз мы более подробно рассмотрим устройство шкафа управления и интерфейс пользователя для управления системой через веб-приложение.

В основу системы управления легло комплексное решение для организации дистанционного мониторинга и управления удалёнными объектами «DUSPRO». О нём можно прочитать в разделе «Наши проекты».

Система управления автоматическим поливом

На следующем рисунке приведена структурная схема комплексного решения для дистанционного управления и мониторинга системы полива.

Клапан автозаполнения на базе arduino своими руками

Контроллер системы управления собирает данные с датчиков системы и с помощью GPRS-модема передаёт их на сервер. В ответ он получает от сервера команды для управления исполнительными устройствами системы (поливочными клапанами, насосом и клапаном блокировки долива воды в резервуар).

Пользователь имеет доступ на сервер через веб-приложение с ПК или мобильного устройства.

Шкаф управления системой

  1. Клапан автозаполнения на базе arduino своими руками
  2. На следующем рисунке приведена структурно-функциональная схема шкафа управления.
  3. Клапан автозаполнения на базе arduino своими руками
  4. Центром системы является контроллер Arduino Mega.
  5. Клапан автозаполнения на базе arduino своими рукамиКонтроллер управляет модемом SIM900 с помощью AT-команд, передаваемых через COM-порт.
  6. Клапан автозаполнения на базе arduino своими рукамиТаким образом осуществляется обмен данными с сервером.

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

Сигналы от датчиков уровня воды в резервуаре принимает модуль ввода дискретных сигналов. Датчики имеют выход типа «сухой контакт». Подробнее о них можно почитать тут.

Для того чтобы завести дискретные сигналы от датчиков в контроллер, пропитываем их напряжением 24 В от блока питания.

Модуль ввода представляет собой дискретные входы с опторазвязкой, преобразующие входной уровень напряжения в 24 В в уровень 5В, понятный контроллеру.

Для измерения температуры на улице к контроллеру подключен датчик DS18B20. Контроллер производит с ним обмен по интерфейсу OneWire.

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

WEB приложение для управления поливом через интернет

Через веб-приложение пользователь:

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

Главный экран управления и мониторинга состояния системы

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

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

Клапан автозаполнения на базе arduino своими руками

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

Журнал событий

Клапан автозаполнения на базе arduino своими руками

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

Оповещение пользователя

В настройках станции пользователь может назначить некоторые события как «предупредительные» или «аварийные». При возникновении этих событий сервер будет оповещать пользователя по электронной почте и (или) СМС. Это могут быть события обрыва связи со станцией, низкий уровень воды в резервуаре или низкая температура на улице.

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

График уличной температуры

Клапан автозаполнения на базе arduino своими руками

На этом экране отображается график изменения температуры в течение заданного промежутка времени (10 мин., 30 мин., час, 12 часов, сутки, неделя, месяц).

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

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

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

Заключение

Для тех, кто хочет более подробно изучить технологию обмена данными с удалённым сервером с помощью Arduino и модема SIM900, мы подготовили серию уроков на эту тему. Вот первый из них.

Источник: http://lazysmart.ru/avtomatika-v-by-tu/sistema-upravleniya-avtomaticheskim-polivom/

Делаем автополив растений с помощью Arduino

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

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

Клапан автозаполнения на базе arduino своими руками

Ирригатор – устройство, контролирующее влажность почвы. Приспособление передает данные на датчик влажности, который укажет сконструированному автополиву на начало работы. Для составления программы используется язык программирования С++.

Таблица с требуемыми материалами:

Компонент Описание
Микроконтроллер Arduino Uno Платформа соединяет периферийные устройства и состоит из 2 частей: программная и аппаратная. Код для создания бытовых приборов программируется на бесплатной среде – Arduino IDE.
Чтобы составить и внедрить программу на микроконтроллер, необходимо приобрести usb-кабель. Для автономной работы следует купить блок питания на 10 В.
На платформе располагаются 12 пинов, роль которых заключается в цифровом вводе и выводе. Пользователь индивидуально выбирает функции каждого пина.
USB-кабель Обязателен в конструировании системы «автополив на ардуино» для переноски кода.
Плата для подключения сенсора – Troyka Shield С помощью платы подключается сенсорная периферия посредством обычных кабелей. По краям располагаются контакты по 3 пина — S + V + G.
Нажимной клеммник Служит фиксатором для пучковых проводов. Конструкция фиксируется с помощью кнопки на пружине.
Блок питания, оснащенный usb-входом
Анализатор влажности почвы
Идеальное средство для подключения платформ. В конструкции предусмотрен фонарик, который говорит о начале работы.
Приспособление подает сигналы, если почва чрезмерно или недостаточно увлажнена. Подключение к плате производится с помощью 3 проводков.

  • ●      MAX глубины для погружения в землю – 4 см;
  • ●      MAX потребление электроэнергии – 50 мА;
  • ●      Напряжения для питания – до 4 В.
Помпа с трубкой для погружения в воду Управление осуществляется с помощью коммутатора. Длина кабеля достигает 2 метров.
Силовой ключ Создан для замыкания и размыкания электрической цепи. Если использовать приспособление при конструировании автополива ардуино, не потребуется дополнительных спаек. Подключение к основной панели осуществляется также 3 проводами.
Соединительный провод – «отец-отец» Несколько проводов соединяют периферийные устройства.
Соединительный провод – «мать-отец» Проводки также соединяют устройства периферии.
Комнатный цветок Система пригодна для разного типа комнатных растений.

Схема подключения и алгоритм работы в проекте «Автополив» на базе мк Arduino

Ниже представлен алгоритм и схема подключения проекта на платформе arduino. Автополив строится следующим образом:

  1. Помещаем плату для сенсора на микроконтроллер.
  2. Подключаем анализатор влажности с помощью платы, описанной выше, к аналогичному пину – А0.
  3. Присоединяем сенсор к микроконтроллеру:
    1. Контакт CS подключается к пину № 9 на плате.
    2. Дисплейные контакты SPI соединяются с соответствующим разъемом на той же плате.
  4. Силовой ключ вставляем в пин №4.
  5. Коммутатор подводим к силовому ключу в разъемы, обозначаются буквами p+, p-.
  6. Теперь подключаем водяную помпу с трубкой с помощью клеммника в контакты с буквами l+ и l-. Постепенно перед конструирующим человеком построится схема.
  7. Втыкаем сенсорную панель, анализирующую влажность, в горшок с цветком.
  8. Конец трубки вставляем с водой в почву. В случае, если растение вместе с горшком по весу не превышает 2 кг, закрепляем шланг отдельно. Иначе водяная капель может опрокинуть цветок.
  9. Опускаем водяную помпу в бутылку, наполненную водой.
  10. Подключаем конструкцию к электрическому питанию.
  1. Ниже предлагаем вам две альтернативные схемы для нашего устройства:
  2. Клапан автозаполнения на базе arduino своими руками
  3. Клапан автозаполнения на базе arduino своими руками
  4. Датчик анализирует статус влажности путем определения кислотности земли. Перед вставкой ирригатора в систему необходимо протестировать и откалибровать оборудование:
  1. Записываем сведения, выведенные на дисплей. При этом сенсор воткнут в сухой горшок. Это обозначается, как min влажности.
  2. Поливаем землю с растением. Ждем, когда вода до конца пропитает почву. Тогда показания на сенсорном экране покажут один уровень. Необходимо записать полученные сведения. Это значит max влажности.
  3. В записном блокноте фиксируем константы HUM_MIN и HUM_MAX тем значением, которое было получено в результате калибровки. Прописываем значения в программе, которую переносим затем на микроконтроллер.

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

В шланге от помпы проделываются 25 сантиметровые отверстия с помощью шила. В полученные дырочки втыкаются кусочки стержней ручек шарикового формата. В итоге получается:

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

Пользователь самостоятельно выбирает время для полива, но только для одного цветка. Нередко цветки по массе и размерам одинаковы. Следовательно, почва в горшках сохнет за одинаковое время. Для этого придуман метод комбинации: количество горшков делится по группам равного веса и размера.

Пример кода для Arduino для проекта «Автополив»

Переходим к программированию кода:

//Скачиваем библиотеку для работы дисплея и подключаем к программе
#include «QuadDisplay2.h»;
//Создаем константу, обозначающую контакт, к которому подключена водяная //помпа
#define VODPOMPA_PIN 4;
// Создаем константу, обозначающую контакт, к которому подключили //анализатор влаги земли
#define HUM_PIN A0;
//Min по влажности
#define HUM_MIN 200;
// Max по влажности
#define HUM_MAX 700;
//Время между проверками полива
#define INTER 60000 * 3;
//Объявляем переменную, в которой будет храниться значение влажности
unsigned int hum = 0;
//В этой переменной будем хранить временной промежуток
unsigned long Time = 0;
// Объявляем объект из класса QuadDisplay, затем передаем номерной знак //контакта CS
QuadDisplay dis(9);
//Создаем метод, отвечающий за работу дисплея
void setup(void)
{
//Запуск метода
  begin();
  // Объявляем функцию, которая будет отвечать за выход водяной помпы из      //контакта
  pinMode(VODPOMPA_PIN, OUTPUT);
  //На дисплее загорается число — 0
  dis.displayInt(0);
}
//Создаем метод, отвечающий за показатель влажности на данный момент void loop(void)
{
  //Рассчитываем показатель увлажнения на данный момент
  int humNow = analogRead(HUM_PIN);
  // Если значение показателя не равно предыдущему, то…
  if(humNow != hum) {
    //Сохраняем полученные сейчас значение
    hum= humNow;
    //Вывод значения на экран
    displayInt(humNow);
  }
//Задаем условия: если прошел заданный пользователь промежуток времени и //статус влаги в почве меньше необходимого, то…
  if ((Time == 0 || millis() — Time > INTER) && hum < HUM_MIN ) {     // Даем сигнал о начале работы водяной помпы     digitalWrite(VODPOMPA_PIN, HIGH);     //Объявляем потом, длящийся 2 секунды     delay(2000);     // Завершаем работу помпы     digitalWrite(POMP_PIN, LOW);     // Ставим в значение переменной Time текущее время и добавляем 3 минуты     Time = millis();   } }

  • Дополнительно вы можете посмотреть пару интересных видео от наших коллег:

На этом на сегодня всё. Отличных вам проектов!

Клапан автозаполнения на базе arduino своими руками

Источник: https://ArduinoPlus.ru/delaem-avtopoliv-rastenii-arduino/

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

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

Для создания системы полива нам понадобиться:

  • Обрабатывающее устройство — по старой традиции у нас за него будет arduino uno
  • Датчик влажности почвы — модуль arduino
  • Помпа(Водяной насос) — водяной насос так же можно купить в Китае или сделать самому. По скольку напряжение помпы у меня 12 вольт включать буду с помощью реле.
  • Другие важные мелочи — шланг меленького диаметра, емкость для воды, провода, источник питания.

Сразу что бы не питать иллюзий скажу, подключать к водопроводу все это дело мы не будем. Что бы избежать нештатных ситуаций, для простоты и удобства будем использовать резервуар(емкость с водой). Из резервуара воду будет качать насос(помпа), небольшой мощности будет достаточно, я буду использовать самодельную помпу с питанием 12 вольт.

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

Исходя из этого приспосабливают свободный конец шланга от помпы.

 2. Датчик влажности почвы

Клапан автозаполнения на базе arduino своими руками

Датчик влажности почвы измеряет влажность и выводит аналоговым сигналом от 0 до 1023 либо цифровым(0 или 1). Мы будем использовать аналоговый сигнал для большего контроля меняющейся влажности. Значение 0 это максимум влажности, 1023 максимум сухой.

Мы будем использовать значение 200 — достаточная влажность, значение 600 — критическая сухость. Пороги влажности и сухости при необходимости можно изменить в скетче arduino. Сам датчик состоит из двух частей: щуп(опускается в землю) и компаратор. Записывается датчик от 3.

3 до 5 вольт, можно использовать встроенный разъем arduino.

  • Схема компаратора на LM393:
  • Клапан автозаполнения на базе arduino своими руками
  • Данные получаются по сигнальному проводу a0 и подключается следующим образом:
  • Клапан автозаполнения на базе arduino своими руками

3. Практическая реализация

Логика работы: раз в секунду(можно сделать более долгие промежутки) arduino получает значение влажности с датчика.

При получении значения больше 550 и если помпа не работала ближайшие 15 минут arduino включает реле(к которому подключен насос) на время time_work.

Задержка 15 минут между поливами сделана для того что бы влага успела впитаться в почву и помпа перекачала больше воды чем надо.

Переменная time_work устанавливает время работы помпы, это время за которое ваш насос успеет выкачать нужное количество воды вашему растению.После полива устанавливается задержка 15 минут для работы помпы, при этом arduino продолжает следить за влажностью. А дальше все циклично. Со временем сделаю датчик уровня воды, что бы помпа не включалась если в резервуаре мало воды и выдавалась индикация.

  1. Схема подключения:
  2. Клапан автозаполнения на базе arduino своими руками
  3. Собственно сам код:

int minv = 600;//малая влажность
int maxv = 220;//полный полив
int normv = 500;//чуть влажная
int value = 0;//полученное значение
int last_value = 0;//последнее значимое изменение
int value_sdvig =50;//значимое изменение int ralay = 6; //пин реле
int time_work = 10;//время работы помпы в сек
int analogPin = A0;//пин датчика

//Переменные таймаута
int second = 0; // секунды
int time_off = 0; // счетчик оставшегося времени

int pause_time = 15; // время отдыха после полива в минутах

  • void setup() { // put your setup code here, to run once:
    Serial.begin(9600); pinMode(ralay,HIGH);//настройка реле digitalWrite(ralay, HIGH);
  • }
  • void poliv()
    { int time_tmp; time_tmp=time_work; digitalWrite(ralay, LOW); while(time_tmp>0 && value>normv){// ждем истечения времени time_work или нормальной влажности почвы delay(1000); value=analogRead(analogPin);//обновляем значение влажности time_tmp—; } digitalWrite(ralay, HIGH); second=0; // сбрасываем секунды на ноль time_off=pause_time;// устанавливаем задержку между поливами
  • }
  • void loop() { // put your main code here, to run repeatedly:
    value=analogRead(analogPin);
    if (value>(last_value+value_sdvig)||value(minv-value_sdvig)) && time_off критическая влажность — 50 и не было недавних поливов
    // временные функции что бы не играться с таймерами
    if (second>59)
    { second=0; if (time_off>0) time_off—;
    }
    delay(1000);//пауза 1 сек second++;
    }

На сегодня всё, спасибо всем за внимание! Ждем ваших комментариев.

Полезность

Источник: https://radio-blogs.ru/blog/arduino/avtomaticheskiy-poliv-rasteniy-arduino

Поливаем свои растения автоматически с помощью Arduino UNO

Клапан автозаполнения на базе arduino своими руками

На даче или дома вы часто поливаете растения? Я думаю, да. Я как раз тоже озадачился таким вопросом. Вот недавно на просторах интернета я нашёл удивительно простое решение для полива комнатных растений. А на чём собрать? Автоматический полив на Ардуино — это достаточно простая и не дорогая автоматика. Её можно поставить на горшки с растениями и вообще забыть о поливе. Только воду периодически нужно доливать.Из этой статьи вы узнаете:

Общее описание проектаЧасть 1. Датчики и ШильдыЧасть 2. Заливаем код в ArduinoЧасть 3. Сборка элементов

Приветствую дорогие друзья и подписчики. С вами снова я, Гридин Семён. На этот раз в этой статье будет говориться о системе полива растений на базе Arduino UNO.

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

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

Общее описание проекта

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

Вот таким образом выглядит система:

Клапан автозаполнения на базе arduino своими руками

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

Часть 1. Датчики и Шильды

Клапан автозаполнения на базе arduino своими руками

Этот проект состоит из следующих элементов:

  1. Датчик влажности почвы — 4 шт
  2. Шильд для управления насосами — 1 шт
  3. Насос — 1 шт
  4. Блок питания 12 В — 1 шт
  5. Блок на 4 клапана — 1 шт
  6. Куча трубок (на ваше усмотрение)
  7. Ардуино УНО — 1 шт

Чем удобен этот комплект?

  • Нету миллиона перемычек и километров проводов
  • Меньше беспорядка, больше производительности
  • Прост в использовании, подключай и пользуйся
  • Можно контролировать до 4 комнатных растений

Часть 2. Заливаем код в Arduino

Мы заливаем сначала код, потому что дальше последует сборка и будет ограничен доступ к плате. Поэтому сделайте лучше сейчас.

Код есть во вставке, можете скопировать и залить в вашу плату.

Если впервые сталкиваетесь с платой Arduino, то про установку IDE и настройке написано в этой статье поподробнее.

// установим все датчики влажности PIN ID int moisture1 = A0; int moisture2 = A1; int moisture3 = A2; int moisture4 = A3; // объявим значения влажности int moisture1_value = 0; int moisture2_value = 0; int moisture3_value = 0; int moisture4_value = 0; // установим выход реле для клапанов int relay1 = 3; int relay2 = 4; int relay3 = 5; int relay4 = 6; // установим выход реле на насос int pump = 2; void setup() { // Объявим реле, как выход pinMode(relay1, OUTPUT); pinMode(relay2, OUTPUT); pinMode(relay3, OUTPUT); pinMode(relay4, OUTPUT); // Объявим насос, как выход pinMode(pump, OUTPUT); // Откроем порт для мониторинга Serial.begin(9600); } void loop() { // читаем значения с датчиков влажности moisture1_value = analogRead(moisture1); moisture2_value = analogRead(moisture2); moisture3_value = analogRead(moisture3); moisture4_value = analogRead(moisture4); // проверяем, какое растение нуждается в воде // и расскоментируйте нужную строчку для конкретного клапана // установите значение требуемой влажности //if(moisture1_value

Источник: http://kip-world.ru/polivaem-svoi-rasteniya-avtomaticheski-s-pomoshhyu-arduino-uno.html

Рекуператор на ARDUINO своими руками

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

Задача максимум: сделать своими руками рекуператор, управляемый в автоматическом режиме по сигналам датчиков качества воздуха микроконтроллером на базе ARDUINO.

Получится у меня или нет — вопрос… Но, поживем — увидим. Далее я буду писать порядок действий и выкладывать рабочие скетчи (прошивки) для конкретного оборудования.

Расчет потребных параметров системы вентиляции можно почитать в статье Вентиляция в каркасном доме своими руками.

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

  1. контроллер (я выбрал Arduino UNO R3 на ATMEGA328P CH340);
  2. дисплей LCD1602 (синий) в сборе с I2C адаптером (что облегчит его подключение);
  3. модуль BME280  высокоточного датчика атмосферного давления, температуры и влажности (управление возможно по I2C интерфейсу);
  4. инфракрасный датчик MH-Z19B  для контроля уровня углекислого газа (UART, PWM).

 Все комплектующие были куплены на Aliexpress.com.

Подробнее о I2C / IIC (Inter-Integrated Circuit) 

I2C / IIC (Inter-Integrated Circuit) – это протокол, изначально создававшийся для связи интегральных микросхем внутри электронного устройства.

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

Мы просто передаем данные то одному, то другому устройству, добавляя к пакетам данных идентификатор нужного элемента.

Самая простая схема I2C может содержать одно ведущее устройство (чаще всего это микроконтроллер Ардуино) и несколько ведомых (например, дисплей LCD). Каждое устройство имеет адрес в диапазоне от 7 до 127. Двух устройств с одинаковым адресом в одной схеме быть не должно. 

Плата Arduino поддерживает i2c на аппаратном уровне. Вы можете использовать пины A4 и A5 для подключения устройств по данному протоколу.

Проблема с китайской Arduino UNO R3

Среда Arduino IDE сначала ни в какую не хотела определять китайскую плату Arduino UNO R3. Для корректного определения пришлось в настройках изменить тип платы на «Arduino Duemilanove or Diecimila».

Подключение LCD1602 к  Arduino UNO R3

Я купил дисплей LCD1602 (синий) в сборе с I2C адаптером, который подключает экран LCD1602 к платам Uno, Nano или Mega всего лишь при помощи 4 пинов. 

Жидкокристаллический дисплей с поддержкой i2c подключается к плате при помощи четырех проводов – два провода для данных, два провода для питания:

  • вывод GND подключается к GND на плате;
  • вывод VCC – на 5V;
  • SCL подключается к пину A5;
  • SDA подключается к пину A4.

Подробнее — на сайте https://arduinomaster.ru

После подачи питания на схему необходимо добиться правильного контраста, если он будет настроен неверно, то на экране ничего не будет отображаться.

Для настройки контраста следует потенциометром (сзади на плате) добиться заполнения прямоугольниками верхней строки дисплея.

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

Самый простой путь подключить библиотеку LiquidCrystal_I2C.h:

  1. запустить среду Arduino IDE;
  2. выбрать в меню «Скетч — Подключить библиотеку — Управлять библиотеками»;
  3. в открывшемся окне Менеджера Библиотек ввести в строку поиска LiquidCrystal I2C, найти «LiquidCrystal I2C by Frank de Brabander», нажать кнопку установки. 

Скетч LCD1602 к  Arduino UNO R3 по I2C 

#include // подключение библиотеки для связи микроконтроллера с устройствами и модулями через интерфейс I2C#include // подключение библиотеки LCD-экрана

  • LiquidCrystal_I2C lcd(0x27,16,2);
  • // создаем значек градуса, byte — хранит 8-битное беззнаковое число, от 0 до 255
  • byte gradus[8] ={B00111,B00101,B00111,B00000,B00000,B00000,B00000,
  • };

// Функция setup вызывается, когда стартует скетч. Используется для инициализации переменных, определения режимов работы выводов, запуска используемых библиотек и т.д. // Функция setup запускает только один раз, после каждой подачи питания или сброса платы Arduino.void setup()

{

lcd.init(); // Инициируем работу с LCD дисплеемlcd.backlight(); // Включаем подсветку дисплеяlcd.createChar(1, gradus); // 1 – номер, присваиваемый создаваемому символу (от 0 до 7); gradus — пиксельные данные для символа

  1. lcd.clear(); // Очищаем экран и размещаем курсор в левом верхнем углу
  2. Wire.begin(); // Подключаемся к шине i2c 
  3. }
  4. void loop(){

lcd.clear(); // очищаем экран для следующей итерацииlcd.setCursor(0,0); // устанавливаем курсор на нужную позициюlcd.print(«VLAG: «); // выводим необходимую информациюlcd.print(» %»);lcd.setCursor(0,1);//lcd.print(«P «);lcd.print(» «);//lcd.print(«T «);lcd.print(«1»);

  • lcd.print(«C»);
  • delay(1000); // обновление информации на экране 1 раз в 1000 мс}

Подключение датчика давления, влажности и температуры BME280 по шине I2C

У модуля BME280 всего 4 контакта: питание (VIN), земля (GND), линия тактирования (SCL) и линия данных (SDA).

Подключаем аналогично дисплею:

  • вывод GND подключается к GND на плате;
  • вывод VCC – на 5V (мой датчик 5-вольтовый);
  • SCL подключается к пину A5;
  • SDA подключается к пину A4.

Подключал напрямую, без подтягивающих резисторов.

Рисунок подключения BME280 к Arduino UNO

Попутно я подключил и модуль реального времени DS1302. Для установленной бибилиотеки iarduino_RTC time по умолчанию подключение выводов следующее:

  • pin 8 к выводу RST;
  • pin 6 к выводу CLK;
  • pin 7 к выводу DAT;
  • GND — GND;
  • 5 V — VCC.

Ссылка на скетч данного этапа https://yadi.sk/d/UpuV-6b_8fHiVA

Подключение датчиков температуры DS18B20

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

Для подключения датчиков необходимо:

  1. установить библиотеку OneWire.h;
  2. запастись (обязательно) сопротивлением 4,7 кОм (подтягивающий резистор для сигнального провода).

Процесс подключения я описывать не буду (можно почитать по ссылке http://arduino-diy.com/arduino-tsifrovoy-datchik-temperatury-DS18B20). Датчики я буду подключать через коннекторы, для этого припаял цветные пины (чтобы не перепутать провода).

  1. Ссылка на скетч данного этапа https://yadi.sk/d/UpuV-6b_8fHiVA
  2. В настоящее время мой проект имеет следующий вид:
  3. Клапан автозаполнения на базе arduino своими руками
  4. Рекуператор на Ардуино своими руками — Рекуператор на Ардуино своими руками

Клапан автозаполнения на базе arduino своими руками

  • Управление вентиляцией с помощью Ардуино — Управление вентиляцией с помощью Ардуино
  • Клапан автозаполнения на базе arduino своими руками
  • Блок управления вентиляцией на Ардуино — Управление вентиляцией на Ардуино
  • Далее планируется подправить код скетча (убрать ненужное, добавить обработку данных температуры от датчиков), а также продумать логику работы для управления реле вентиляторов.
  • Но об этом позже.
  • Блок управления содержит плату Ардуино, все датчики, а также два реле для включения и выключения вентиляторов.

 

Источник: https://samostroy74.ru/rekuperator-na-arduino-svoimi-rukami

Аrduino для начинающих

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

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

Что такое Arduino и для чего оно нужно?

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

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

Аппаратная часть включает в себя большую линейку микроконтроллеров и готовых модулей для них. Благодаря этому, работать с Arduino очень просто!

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

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

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

Клапан автозаполнения на базе arduino своими рукамипроекты на Arduino

Стартовый набор Arduino

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

Базовый набор ардуино для начинающих: Купить
Большой набор для обучения и первых проектов: Купить
Набор дополнительных датчиков и модулей: Купить
Ардуино Уно самая базовая и удобная модель из линейки: Купить
Беспаечная макетная плата для удобного обучения и прототипирования: Купить
Набор проводов с удобными коннекторами: Купить
Комплект светодиодов: Купить
Комплект резисторов: Купить
Кнопки: Купить
Потенциометры: Купить

Среда разработки Arduino IDE

Для написания, отладки и загрузки прошивок необходимо скачать и установить Arduino IDE. Это очень простая и удобная программа. На моем сайте я уже описывал процесс загрузки, установки и настройки среды разработки. Поэтому здесь я просто оставлю ссылки на последнюю версию программы и на статью с подробной инструкцией.

Версия Windows Mac OS X Linux
1.8.2 ZipInstaller Installer
  • 32 bits
  • 64 bits
  • ARM

Язык программирования Ардуино

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

Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:

  • После каждой инструкции необходимо ставить знак точки с запятой (;)
  • Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
  • Так же необходимо указывать тип данных перед объявлением переменной.

Источник: https://all-arduino.ru/arduino-dlya-nachinayushhih/

Ссылка на основную публикацию