Поющее растение на базе arduino

Мое первое знакомство с Arduino

Подписка

  • Магазины Китая
  • TINYDEAL.COM
  • Радиоуправляемые модели

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

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

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

Вместо пролога

Тема использования Arduino глубоко раскрыта в статьях уважаемых участников форума Spc, Sanja и Bim_Sony. Данная статья не претендует на полноту описания, но показывает опыт человека, никоим образом ранее не сталкивавшегося ни с электроникой, ни с микро контролерами в частности. Отчетливо понимая, что мир микроконтроллеров не начинается с Arduino и то, что данная платформа скроет от меня многие премудрости работы с ними (равно как и уберет многие грабли для начинающего) я запасаюсь терпением и желанием открыть для себя что-то, что окружает ежедневно, но спрятано за стеной непонимания, а скорее просто не заметно глазу.

Первым шагом стала покупка Arduino Duemilanove. Почему именно эта модель? Абсолютно спонтанное решение — просто подвернулась в списке новинок магазина.

Техническая информация

Микроконтроллер: ATmega168
Рабочее напряжение 5 В
Входное напряжение (рекомендуемое) 7-12 В
Входное напряжение (предельное) 6-20 В
Цифровые Входы/Выходы 14 (6 из которых могут использоваться как выходы ШИМ)
Аналоговые входы 6
Постоянный ток через вход/выход 40 мА
Постоянный ток для вывода 3.3 В 50 мА
Флеш-память 16 Кб (ATmega168) или 32 Кб (ATmega328) при этом 2 Кб используются для загрузчика
ОЗУ 1 Кб (ATmega168) или 2 Кб (ATmega328)
EEPROM 512 байт (ATmega168) или 1 Кб (ATmega328)
Тактовая частота 16 МГц

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

Все оказалось не сложно и вдоволь наигравшись миганием светодиодов было решено пойти немного далее.

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

Следующим шагом стала покупка платформы с четырьмя моторами, и motor driver shield.

Дополнительная информация о шасси

Количество моторов: 4

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

Дополнительная информация о LM293D

Motor Shield – силовой модуль управления двигателями для микроконтроллеров серии Freeduino/Arduino. Модуль предназначен для упрощения разработки моторизированных и робототехнических устройств.

Технические возможности позволяют реализовать разнообразные проекты, связанные с подключением и управлением слаботочными двигателями следующих типов: * четырёх двигателей постоянного тока (DC motors); * двух шаговых двигателей униполярных или биполярных с одинарной или * двойной обмоткой (stepper motors); * двух 5В сервоприводов.

Технические характеристики

напряжение питания: +7…+ 24 В;
количество силовых каналов: 4;
максимально-продолжительный ток каждого канала: 0,6 А;
напряжение питания сервоприводов: 5 В;
возможность реверса каждого двигателя;
возможность независимого управления каждым каналом;
Отверстия на платформе оказались не приспособленными для крепления Arduino-подобных, но это не смутило. Вооружившись стяжками удалось закрепить на ней Duemilanove, поверх которого тут же был водружен motor shield:Еще одним неприятным моментом стало отсутствие припаянных проводов к моторам. Пришлось потратить какое-то время на лужение и припаивание проводов из тех что были в наличии.

Совет

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

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

Совет

Мне, как новичку, показалось удобным на этапе сборки платформы пронумеровать пары проводов и сами моторы, чтобы не путаться в дальнейшем при написании кода. Моторы:И пары проводов:Кроме того, чтобы не путать полярность при отключении проводов от моторов, плюсовые провода и зажимные контакты шилда были также помечены красным маркером:Конечно, если вы будете использовать провода разных цветов, помечать провода не имеет смысла. Мне же было удобно, так как все использованные мною провода были черного цвета.Чтобы закончить с материальной составляющей, осталось лишь обеспечить питание для моторов. Источником, по-началу, была выбрана сборка из четырех элементов AAA:Но такого запаса хватало не на долго и немного позже была добавлена сборка из 6 AA элементов, которая в отличии от первой не имела кнопки включения/выключения, поэтому в разрез плюсового проводника был вставлен переключатель:Обе батареи решил оставить для чистоты эксперимента — разделить по питанию Ардуино и мотор шилд и оценить разницу.

Справка

Для написания кода (т.н. скетчей) используется одноименная среда разработки “Arduino IDE”.

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

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

Код скетча

#include #define MAX_SPEED 255 // Maximum motor speed #define LEFT 33 #define RIGHT 44 #define TURN_TIME 660 //Создаем объекты для двигателей AF_DCMotor frontLeftMotor(1); //канал М1 – передний левый AF_DCMotor frontRightMotor(2); //канал М2 – передний правый AF_DCMotor rearLeftMotor(3); //канал М3 – задний левый AF_DCMotor rearRightMotor(4); //канал М4 – задний правый void setup() {} void setSpeed(int newSpeed) { frontLeftMotor.setSpeed(newSpeed); rearLeftMotor.setSpeed(newSpeed); frontRightMotor.setSpeed(newSpeed); rearRightMotor.setSpeed(newSpeed); } void turn(int dir) { switch(dir) { case LEFT: frontLeftMotor.run(BACKWARD); rearLeftMotor.run(BACKWARD); frontRightMotor.run(FORWARD); rearRightMotor.run(FORWARD); break; case RIGHT: frontLeftMotor.run(FORWARD); rearLeftMotor.run(FORWARD); frontRightMotor.run(BACKWARD); rearRightMotor.run(BACKWARD); break; default: break; } delay(TURN_TIME); } void move(int dir) { switch (dir) { case FORWARD: frontLeftMotor.run(FORWARD); rearLeftMotor.run(FORWARD); frontRightMotor.run(FORWARD); rearRightMotor.run(FORWARD); break; case BACKWARD: frontLeftMotor.run(BACKWARD); rearLeftMotor.run(BACKWARD); frontRightMotor.run(BACKWARD); rearRightMotor.run(BACKWARD); break; default: frontLeftMotor.run(RELEASE); rearLeftMotor.run(RELEASE); frontRightMotor.run(RELEASE); rearRightMotor.run(RELEASE); } delay(500); } void loop() { setSpeed(MAX_SPEED); move(FORWARD); turn(RIGHT); move(FORWARD); move(BACKWARD); delay(500); turn(RIGHT); move(FORWARD); turn(LEFT); move(FORWARD); delay(80); turn(LEFT); move(RELEASE); delay(9500); }
После компиляции и заливки в Ардуино машинка прошла боевое крещение:И даже вызвала интерес у домашнего любимца:

И напоследок несколько фото агрегата.

Эпилог

К моменту написания статьи на импорте отметилась посылка с рядом датчиков, среди которых: ультразвуковые дальномеры, ИК дальномеры, датчики обхода препятствий и sensor shield для удобного подключения всего вышеперечисленного. Кроме этого были заказаны 2 радио модуля для беспроводного управления платформой. Так что веселое времяпрепровождение мне обеспечено еще на долго.

Резюме

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

Плюсы:

Огромное комьюнити, тонны видео и статей Открытая архитектура Легкое макетирование

Минусы:

Цена некоторых шилдов кусается.

Upd: Магазин снизил цену с $13.49 до $10.99

Планирую купить +86 Добавить в избранное Обзор понравился +103 +187

Источник: https://mysku.ru/blog/china-stores/18729.html

Octosynth — музыкальный инструмент на базе Arduino своими руками

Перевёл alexlevchenko для mozgochiny.ru

Что же такое Octosynth спросите вы? Оctosynth полифонический синтезатор, что может воспроизводить 8 длительных модулированных импульсов звука, что формируют вместе музыкальный ряд. В английской терминологии – это 8 клавишный электронный орган, что может играть больше, чем один звук за раз, но только в одном ряду/тональности.

Как вы уже догадались из названия, поделка будет работать на базе Arduino.

Шаг 1:

Нам понадобится:

  • Arduino Uno;
  • 12 штекеров (2 штекера в одной гребенке и 6 штекеров в другой. Также 4 в третей (по желанию));
  • 8 длинных проводков (под длинными, не имею ввиду 3 метровые, я говорю о 20-30 см проводах, которые отлично подойдут);
  • Медная лента;
  • Основа (использовал пенопласт). Длина зависит от ширины клавиш;
  • Гнездо для подключения;
  • Батарея;
  • Динамик.

Шаг 2: Прошивка

Загрузим код в Arduino.

Шаг 3: Изготовление

  • Определитесь с длинной основания. Убедитесь в том, что оставили достаточно места для размещения медных пластин на основе.
  • Медные пластины должны быть на миллиметр больше заложенных размеров.
  • Поделим ленту на 8 частей.
  • Припаяем по одному проводу к каждому куску ленты.
  • Припаяем штекеры через провода к лентам. 6 лент к 6 штекера (для 6 аналоговых входов) и затем пару двойных для двух других входов (цифровые входы 6 и 7).
  • Порядок иметь значение. Первый будет (аналоговый 0) идти к крайнему левому краю пенопласта. Аналоговый 5 будет идти к входу 6, так как это «la» в музыкальном ряду.
  • Цифровой вход 6 это «ti», а вход 7 — это высокое «do».

Шаг 4: Монтаж проводки

Подключим провода к Arduino. Присоединим динамик к цифровому выходу 11. Возможно, придётся использовать монтажную колодку.

Шаг 5:

Можете подключить питание к Аrduino. Динамик должен заиграть приветствие.

Дело в том, что пока играет приветствие, система калибрует сама себя. Если же вы прикоснётесь к любой пластине, то в дальнейшем система будет думать, что это пластина = 0. Отсчитайте до 10 прежде, чем играть.

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

(A-z Source)

Рубрика: Электронные самоделки

Источник: http://mozgochiny.ru/electronics-2/octosynth-muzyikalnyiy-instrument-na-baze-arduino-svoimi-rukami/

Поющее растение на базе Arduino

Источник: http://laptop.ucoz.ru/news/pojushhee_rastenie_na_baze_arduino/2014-06-16-5070

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

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

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

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

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

В данном проекте рассматривается создание поющего растения (ведь не зря в свое время изобрели терменвокс) с использованием платы arduino, шилда gameduino и шилда сенсорного восприятия.

Краткое введение в понятие емкости

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

Благодаря принципу преобразования прикосновения в частоту звука на основе исследований Disney Research lab мы можем создать действительно надежное решение, которое будет полностью работать на платформе Arduino.

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

Прикрепив устройство сенсорного распознавания к растению, мы можем измерить емкостное изменение и преобразовать его в звук.

Шаг 1: Компоненты и инструменты

Требуемые компоненты:

Компоненты, необходимые для создания шилда сенсорного восприятия:

  • Шилд-прототип
  • Штыревые разъемы
  • Резисторы: номинал 10 кОм, 1 МОм, 3,3 кОм
  • Конденсаторы: номинал 100 пФ, 10 нФ
  • Диод: 1N4148
  • Катушка / дроссель: номинал 10 мГ

Инструменты:

  • Паяльник и сопутствующие материалы.
  • Инструменты для работы с деревом.

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

Шаг 2: Шилд сенсорного восприятия

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

Шилд сенсорного восприятия использует вывод 9 для генерирования частотного сигнала и gameduino также использует вывод 9 для выбора кристалла.

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

Шаг 3: Совместно соединение шилда сенсорного восприятия и GameDuino

Поскольку оба шилда используют вывод 9, необходимо сделать так, чтобы шилд GameDuino использовал вывод 4 на плате Arduino, а также потребуется соединить шилд сенсорного восприятия напрямую к выводу 9 на плате Arduino.

Для этого выполните следующее:

  • Согните вывод 9 на выходе шилда gameduino. Делайте это осторожно, чтобы не сломать его.
  • Подключите провод от согнутого вывода на плате gameduino к выводу 4 на плате Arduino.
  • Подключите другой провод с вывода 9 на arduino к выводу pwm на шилде сенсорного восприятия.

Это не самое оригинальное решение, но оно будет работать:)

Далее для правильной работы устройства необходимо преобразовать библиотеку Gameduino для работы по выводу 4 вместо вывода 9. Преобразованная библиотека включена в список файлов проекта.

Шаг 4: Соедините вместе два шилда и загрузите программный код

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

Обычно 3 вещи вызывают некоторые трудности:

  • Для ОС Windows необходимо установить нужные драйвера (иногда на mac).
  • Необходимо выбрать правильный последовательный порт в интерфейсе пользователя.
  • Необходимо выбрать правильную плату в интерфейсе пользователя.

После данных шагов необходимо загрузить программный код в плату Arduino:

  • Загрузите Arduino: www.arduino.cc
  • Подключите плату Arduino к компьютеру через usb.
  • Загрузите программный код из архива внизу статьи.
  • Переместите библиотеки из папки библиотек в папку библиотек Arduino.
  • Загрузите код в плату Arduino.

Шаг 5: Отображение кода и калибровка с помощью guino

Мы используем Guino для отображения кода. Guino – это новая программа, которая отображает данные, загружаемые с платы Arduino. Это позволяет выполнить калибровку «на лету».

Таким образом можно контролировать некоторые внутренние параметры. Загрузите программу отсюда и запустите ее (требуемые библиотеки уже загружены на предыдущем этапе).

Шаг 6: Создание корпуса

Следующие шаги являются опциональными. Их можно пропустить, поскольку для этой цели вы можете использовать готовый корпус из магазина container store и модифицировать под свои нужды. Далее необходимо вырезать акриловую панель и разместить сверху устройства.

Шаг 7: Сверловка отверстий для USB-кабеля Arduino

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

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

Шаг 8: Лазерная нарезка акриловых панелей

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

Шаг 9: Монтаж двух кнопок и коннекторов

Кнопки для регулировки максимальных и минимальных значений подключаются к выводам analog 1 и analog 2. Поскольку мы используем внутренние подтягивающие резисторы, другие выводы кнопок необходимо подсоединить на землю. Вы можете пропустить данный шаг, а вместо него использовать интерфейс Guino для калибровки растения.

Шаг 10: Подключение аудио разъема

Я использовал стерео аудио кабель для подключения гнездового разъема к шилду Gameduino. Однако можно подключить данный разъем напрямую к шилду Gameduino.

Оригинал статьи

Компонент Описание
Микроконтроллер 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. Записываем сведения, выведенные на дисплей. При этом сенсор воткнут в сухой горшок. Это обозначается, как min влажности.
  2. Поливаем землю с растением. Ждем, когда вода до конца пропитает почву. Тогда показания на сенсорном экране покажут один уровень. Необходимо записать полученные сведения. Это значит max влажности.
  3. В записном блокноте фиксируем константы HUM_MIN и HUM_MAX тем значением, которое было получено в результате калибровки. Прописываем значения в программе, которую переносим затем на микроконтроллер.

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

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

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

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

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

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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 //Скачиваем библиотеку для работы дисплея и подключаем к программе#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, затем передаем номерной знак //контакта CSQuadDisplay 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

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

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

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

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

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

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

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

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

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

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

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

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

Схема компаратора на LM393:

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

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

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

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

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

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

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

Собственно сам код:

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++; }

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

poliv.7z

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

Как и зачем: подборка странных Arduino-проектов23.01.2018 11:36

Если у инженеров появляется свободная минутка, то они либо скучают, либо берут паяльник в руки. Либо берут паяльник в руки от скуки и собирают устройства подобно тем, что представлены ниже. Ибо чем ещё, кроме скуки, умелых рук и пытливого мозга, можно объяснить появление лилии, издающей ноту «фа», или стула, который ломается после восьмого приседания на него?

Встречайте топ странных изобретений, собранных на Arduino.

Пища для размышления: треть проектов принадлежат студентам дизайнерских колледжей.

Поющее растение

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

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

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

Для всего этого ему понадобились плата Arduino, шилд Gameduino и самодельный шилд для сенсорного восприятия. Если честно, то автор польстил себе, назвав проект «поющим растением». Судя по видео, растение в лучшем случае просто звучащее.

Система Nod Bang

Ещё одно устройство о звуках, причём дословно это не перевести. Идея заключается в том, что мы довольно часто киваем в такт музыке. Andrew Lee решил, что кивок может сам по себе быть музыкой, а точнее — битом.

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

«Обнимашкобот»

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

Дабы не беспокоить коллег и не кидаться на случайных прохожих, пользователь под ником [kaytdek] создал Hugbot — «обнимашкобота». Робот встретит с распростёртыми объятиями любого и при необходимости подарит гораздо больше обнимашек, чем гласит «дневная норма».

Для сборки автор использовал Arduino Uno.

Arduino-фольга

Пугливая фольга с необычным названием @>странный проект от немецких студентов Международной школы дизайна Кёльна Vitus Schuhwerk и Till Maria Jürgens (как Эрих Мария Ремарк — тоже мальчик).

Тем не менее, эта штука вызвала большой интерес в сети, ведь она — как живая.

Благодаря невидимой леске, ёмкостному датчику, четырём сервоприводам и, конечно же, плате Arduino фольга «реагирует» на приближающуюся руку и всячески извивается.

Самоуничтожающийся стул

Ещё одно, мягко говоря, странное изобретение принадлежит студентам из швейцарской школы дизайна и искусств ECAL в Лозанне. DRM Chair — именно так называется проект — послужит сидением всего восьми пользователям. Только не за один раз, а последовательно: когда восьмой человек освободит стул, уставшее сидение начнёт саморазрушаться.

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

Автозашнуровыватель

Хотя будущее из второй части киноленты «Назад в будущее» уже наступило, кроссовок, как были у Марти МакФлая-младшего, так в общем производстве и не появилось.

Но пользователю под ником blakebevin всё-таки удалось спроектировать самозашнуровующиеся кроссовки.

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

Генератор имени для ребёнка

Не в силах прийти к консенсусу в выборе имени для будущего чада? Когда вариантов больше, чем два, и монетку не подбросишь, на помощь придёт Arduino Baby Name Chooser — проект от GeekBoy.it.

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

Если в душе вы всё-таки надеялись на другой вариант, то можно нажать на кнопку ещё раз, а потом ещё, и ещё, и ещё — пока надпись на монохромном дисплее не устроит всех членов дискуссии.

«Маслобот»

Этот робот на Arduino является прототипом робота из сериала «Рик и Морти». В 9-м эпизоде 1-го сезона безумно-гениальный учёный собрал робота для одной цели: приносить масло. Студенты из Bruface сконструировали почти такого же, только у них он немного больше, управляется ИК-пультом вместо голоса и не задаётся вопросами о тщетности бытия.

Прибор состоит из Arduino Uno, двух больших и двух маленьких сервомоторов и ИК-сенсоров. Маслобот достаточно умён для того, чтобы не свалиться со стола, отличить масло от других предметов и долго хранить его перед тем, как передать нужному человеку.

Часы «Игра теней»

Часы Shadowplay Clock спроектировали дизайнеры из компании Breaded Escalope. Фишка часов в том, что они показывают время с помощью игры света и тени от пальца пользователя.

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

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

Да, красиво. Да, оригинально. Но явно странно. Подавлющее большинство изобретений на Arduino — для ленивых и автоматизируют процесс (тот же «Маслобот»). Но в данном случае, чтобы изобретение выполнило свою прямую функцию, к нему нужно подойти!

Глядя на эти проекты, хочется спросить: автор, зачем? Но буквально через пару секнуд ответ находится сам — да просто для фана. И вообще –, а почему, собственно, нет?

© Geektimes

Источник: http://pcnews.ru/blogs/kak_i_zacem_podborka_strannyh_arduino_proektov-811835.html

Умная фитолампа на Arduino

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

Конечно, это не просто лампа иначе зачем писать об этом на geektimes? Фитолампа управляется с помощью контроллера Arduino и имеет на борту датчик освещенности ( для адаптивной регулировки яркостью), LED драйвер для управления яркостью по средствам ШИМ, радиомодуль 433 Mhz и конечно bluetooth ( по тому что с ним все становится круче…

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

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

Пришел, увидел, автоматизировал.

Спект поглащения света у высших растений находится в диапазоне от 350 до 900 нм. Процессе роста растениям нужен разный спектральный состав света, но существуют два наиболее используемых растением диапазона. 440 -470 нм свет воспринимаемый глазом как синий.

Влияет на вегетативную систему отвечающую за рост зеленой массы, листьев и побегов. И 630 -670 нм красный свет, влияющий на генеративную систему растений. Цветение, созревание плодов и семян. На этом мы заканчиваем экскурс по биологии и переходим к самой интересной части.

Целью создания фитолампы является наиболее эфективное воздейсвие на растение светом в диапазонах 440 – 470 нм и 630 – 670 нм. Именно это сочетание синего и красного дают фиолетовый свет. Для этой цели были выбраны полноспектральные светодиоды мощьностью 1W и 3W.

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

Также для досветки могут быть использованы светодиоды 5050, 5630, 5730, но их световое КПД ниже за счет использования ограничивающего резистора в схеме. Также подобные линейки греются заметно больше. Лучше всего себя показали 1 W фитосветодиоды с Aliexpress ( по показателям нагрева и освещенности Lm ), хотя в прототипе используются 3W.

Итак что же может предложить садоводам человек с дипломом инженера и достаточным количеством свободного времени?

Внутри корпуса на вытравленной плате установлен контроллер Arduino nano.

Если кратко контроллер управляет яркостью светодиодов получая информацию об освещенности с фоторезистора установленного на корпусе лампы.

Тем самым достигается адаптивная яркость лампы. Демонстрация есть на видео.

/* Абзац технических тонкостей можно пропустить
Вся схема запитана от блока питания 24V. На стороне 220В установлен предохранитель на 1 А. Питание на светодиоды подается через драйвер LDD-700H с выходным током 700 mA и входом для диммирования, поддерживающим ШИМ.

Мощность лампы 18 Вт, фитолампа обеспечивает освещенность 3000лк на расстоянии 20 см. Стоит отметить что питание на контроллер подается через стабилизатор напряжения L7809С, который понижает напряжение с 24V от блока питания до приемлемых 9V на вход Vin контроллера.

В обвязке стабилизатора напряжения установленны 2 конденсатора номиналами 0.33 мкФ на входе и 0.1 мкФ на выходе, это сделано для фильтрации скачков напряжения и позволяет уменьшить нагрев стабилизатора.

Резисторы R3 = 1кОМ, R4 = 2 кОм на входе Rx Bluetooth модуля предназначенны для уменьшения напряжения до 3.3 вольт.

Резистор R1 = 10 кОм вместе с фоторезистором представляют собой делитель напряжения и позволяют измерить изменение напряжения ( а вернее сопротивления) на фоторезисторе в зависимости от внешнего освещения. И наконец резистор R2 = 100 Ом на выходе 10 arduino, установлен для его защиты. Выход 10 управлет яркостью лампы, а также выключает ее при подаче нулевого потенциала. */

Для сборки прототипа была вытравлена плата.
В корпусе установлен приемник 433 Мгц для управления лампой с пульта ( если нет телефона под рукой) И конечно самое интересное, в лампе установлен модулем Bluetooth hc-05, что позволяет управлять ею с помощью телефона на Adroid с написанного приложения.

В данный момент можно выставить 3 режима работы лампы:

  • Включение
  • Выключение
  • Адаптивная яркость по фоторезистору

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

В одном горшке рассада досвечивалась вечером в течении 3 часов.

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

От лампы мощностью 12W я получил освещенность 4000 Лк на расстоянии 15 см.

Для светодиодов 5630 ( сборка на линейке красных и синих светодиодов) при мощности 16W удалось достичь только 2000 Лк на расстоянии 15 см, схожие характеристики показали и 3W фитосветодиоды. Конечно многое зависит от качества светодиодов.

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

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

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

И в конце обещанное видео демонстрации работы фитолампы. Код для контроллера приложения вы можете посмотреть на моём сайте, ссылка есть в профиле.

Источник: http://www.pvsm.ru/android/260537

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

Опубликовано 13.10.2013 19:19:00

Вступление.

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

Плюс ещё отъезды на дачу на выходные… А один только полметровый куст эвкалипта способен за два дня и ночь испарить 2-3л воды и успеть завянуть.

Фитильная система не понравилась тем, что она нерегулируема и жрёт место на окне. Которого и так мало.

Лейки-пипетки типа plant genie не подошли по причине того, что даже познав дао втыкания их в горшок(не так воткнул — или не капает или вытекает за пару часов), их надо или так много, что не хватает площади горшка или горшок небольшой и просто переворачивается. Ну и на заявленные две недели этих 0.22л тоже не особо хватает.

Решение задачи

Надо было определиться с:

  1. чем качать воду
  2. как считать объём воды, который ушёл на полив каждого горшка
  3. как определить, что надо поливать.
  4. как сделать индивидуальный полив. То есть каждый горшок сам по себе.
  5. ночью хочется спать, а эта штука шумновата.

Мозгами этого всего будет ардуино, точнее, atmega328 в исполнении PDIP-28, ибо паяю я так себе.

Пятый пункт с “тихими часом” решается с помощью микросхемы часов. В моём случае DS1302.

Решение было найдено весной, когда мне попалась ссылка на российский инет-магазинчик, в котором оказались небольшие насосы-помпы на 6В и, самое главное, счётчики расхода жидкости:

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

Два пункта решены. То,что счётчик на шланг 6мм, а насос — на 3мм, было решено аквариумным шлангом на 4мм, который просто размачивался в кипятке и натягивался. Стоимость шланга — 11-20руб за метр.

Спасибо зоомагазину “Бетховен” на водном стадионе, где мне удалось купить 20метров за 11руб и потом ещё добрать 28метров за 17руб. Аквариумный шланг ещё удобен тем, что его отрезки можно соединять нарезанными по 1.

5-2см кусками стержня от гелевой ручки, что весьма бюджетно относительно покупки соединителей(10-30руб в зависимости от продавца).

Да, дальше нам потребуется много-много аквариумного шланга и много-много проводов(у меня на 4 окна ушло почти 100м шланга и метров 150 провода. Но делаем скидку на то, что из-за особенностей окон приходилось ставить на дальнюю от основной электроники половину окна).

Итак. Нам есть, чем качать, и есть, чем измерять сколько накачали. Теперь надо раздать воду на кучу горшков. Независимо раздать. Идея с кучей сервомашинок и краников отпала из-за стоимости. Зато поиск по интернету дал идею с сервомашинкой и кучей стаканчиков. Первая версия работала на пластиковых стаканах на 0.

25(которые из чуток хрупкого пластика, а не самые дешёвые). Хорошо, но мало. Достать пластиковые пробирки подходящего диаметра (пара сантиметров)  и ёмкости( 50+мл) оказалось жуткой проблемой в этом странном городе.  Для второй версии была растёрзана старая формочка для льда, попавшийся под руку флакон от чего-то и два стакана.

И это заработало!

“Кран” сделан из завалявшейся трубки для аквариумана 4мм(купил на “птичке” много лет назад), двух Г-образных переходников(источник тот же).

Так как сервомашинка слабовата и я забыл сделать отступ от стены побольше, когда вырезал основание(материал-пластик для откосов окон), то используется второй Г-образник для того, чтобы не было перегиба шланга. Сервомашинка — TowerPro SG-90.

Мерзкие мелочи(грабли):

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

    Советую на конец крана посадить второй кусок шланга, который опустить в канистру. Мало ли…

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

  • сервомашинка даёт ошибку порядка 5-10градусов,когда её поворачиваешь на небольшие углы. Лечится тем, что после каждого налива в стаканчик поворачиваем её до нуля.
  • Все соединения после насоса надо сажать или на клей или хотя перехватывать проволочкой. Пару раз китайский БП перед смертью выдавал выше 6В и соединения распадались.

    Канистра воды на полу — тот ещё подарок.

 

Датчики

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

Используем просто полоску текстолита с двумя вытравленными и залуженными дорожками. Важно нарезать все датчики для одной схемы с одного листа, потому что иначе будет сильный разброс значений, что плохо. В моём варианте это полоска 10х35мм с двумя дорожками по ~3мм по краям и зазором в 4мм.

Сигнал с таких датчиков аналоговый, соответственно, будем использовать аналоговые входы atmega328. Схема подключения стандартный вариант с делителем напряжения, где в одном плече(что к земле) переменный резистор, а на втором(+5В) — наш датчик. С середины снимаем показания аналоговым входом. Чем суше грунт, тем меньше показания датчика.

При использовании подобных датчиков надо иметь в виду, что электролиз в мокром грунте играет против нас. Решение простое:  вешаем между питанием и датчиками ЭМ-реле, которое включаем за 1-2с до снятия замеров (время на стабилизацию, подобрано опытным путём) и выключаем сразу после снятия замеров.

Реле выбрано за то, что даёт физический разрыв цепи и  у нас датчики не будут постоянно “под фазой”. Да и растениям вряд ли полезен такой “электрический грунт”.

  Как показала практика,  за почти полгода работы из полусотни датчиков пришлось только два протереть от лишайника, который пошёл по горшку после пересадки в новый грунт. Остальные работают.

Плодим входы

Как было видно на слайде выше, у нас 17 стаканов-приёмников. Горшков на окне 16. А на atmega328 только шесть аналоговых входов. Решение простое: используем расширители аналоговых входов.

Из того, что достать просто есть два варианта: 8-ми канальные микросхемы HCF4051BE и 16-ти канальные CD4067BE. Первые мне попались в продаже сразу и вменяемые деньги в районе 20руб/шт. Зря я это сделал… Пожалел потом много раз.

Проблема проста: у HCF4051BE аналоговые входы разбросаны не по порядку ножек, а у CD4067BE — всё идёт подряд. Новую версию буду делать на них.

 

Общие штрихи

Итогом второй попытки стала вот такая разводная коробка 10х10х4см

В виду отсутствия в пределах досягаемости нормального лазерника и некоторой лени, всё сделано на макетной плате.

Я не сумел найти общий язык с DS1302 по поводу резервного питания (после сбоя основного питания микросхема упорно превращалась в утюг) и поэтому ограничился тем, что в линию питания вставил диод Шоттки и после него впаял ионистор на 0.1Ф.  Работает.

Чтобы можно было перенастраивать без перепрошивки, поставил bluetooth модуль и впилил в прошивку простенький интерпретатор команд и сохранение данных в eeprom. учитывая,что перешёл на программатор, в новом варианте конфиг буду писать во внешнюю микросхему eeprom. Заодно туда можно будет побольше данных сохранять.

Ещё обнаруженные проблемы:

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

И на последок пара видео:

Краткий обзор:

И просто видео работы версии на более прилично выглядящих одноразовых рюмках:

Схема и pcb-разводка  в формате diptrace будут позже, после обкатки нормальной версии, сделанной ЛУТом, а не на макетной плате.

Обновление: Вылезла проблема: изменение количества датчиков плохо сказывается на точности серв (питание просаживается). Подгонять каждый раз — занятие крайне нудное.

Решением стало прикрепить на трубку “крана” водораздатчика геркон(МКА-10110/советский аналогичного размера), на сервомашинку приклеить старую CD-болванку и в нужных точках просверлить отверстия и вклеить в них неодимовые магнитики цилиндриком 2х5мм. Получилось следующее(магнитики подчёркнуты красным):

Исходники лежат на github, в поддиректории pcb — платы под ЛУТ в формате diptrace. Платы разведены под микросхемы CD4067BE, прошивка также под них сделана. Остальное вроде в коде откомментировано.

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

Источник: http://zelectro.cc/automatic-plant-watering

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}