Не дай себе засохнуть … или о том, как программист создавал первое в своей жизни устройство на базе Arduino


Вот! Теперь я смело могу не смеяться в цирке! Я закончил первый в своей жизни СЕРЬЁЗНЫЙ проект на базе Arduino. Как я отметил уже, в названии статьи, я — программист, по образованию, по призванию и по работе. От того и к электронике имею, вернее, имел, до этого момента, весьма посредственное отношение. Но, Arduino — изменила всю мою вялотекущую, напротив монитора, жизнь, Алилуя Ардуино, да светится имя твоё 13-м пином. И теперь, я хочу поделиться с вами, мои читатели, накопленными в процессе работы своими навыками, граблями и шишками в области электроники, программирования и житейской философии.
Но обо всём по порядку.


Часть 1. Философская.

Ради бога, не подумайте ни чего такого, сейчас, я просто расскажу как я дошёл до такой жизни и создал ЭТО. Многие, услышав о моём проекте, восхищаясь, говорили мне: «Ах! Какой молодец! И не лень ему было, после работы, сидеть с паяльником и компьютером и мастерить ЭТО?» На что, я, им отвечал, что именно она — матушка лень и с подвигла меня на сей ратный подвиг. Одним словом, ленитесь больше и обрящите.
Ну, а теперь, о том же, только подробнее.
Однажды,возникла идея установки системы капельного полива на моём земельном участке, дабы за зря не бегать по нему как дурень с шлангом. Сказано — сделано! Получив, надлежащие консультации садовника, по совместительству хозяина магазина садовых принадлежностей и у него же купив, кучу барахла в виде труб, кранов, переходников и т.д. и т.п. смонтировал у себя нормально функционирующую систему капельного орошения. И всё бы хорошо, но, для того чтобы эксплуатировать эту штуку, необходимо:

— выйти на улицу (желательно одетым),
— открыть кран (желательно руками),

затем, спустя время, не забыть его выключить,

— опять же, выйдя на улицу (опять же одетым)
— закрыть кран (опять же руками).

Согласитесь, в наш век, компьютерных технологий: «Когда космические корабли бороздят просторы Большого театра», это давно уже моветон. У того же садовника, я, узнал о наличии автоматических систем орошения от разных производителей. Всё бы хорошо, но с одним лишь «НО» — эти системы далеко не во всём отражали мои интересы и желания в организации процесса, эдак завернул, хоть диссертацию пиши. Ну и цена на эту автоматику убивала всякую охоту на автоматизацию этого процесса. Если кому будет интересно, позже расскажу о достоинствах и недостатках этих систем.
И тут, произошло чудо! Именно так или похоже описывают все свои первые серьёзные проекты на Arduino. Наигравшись всласть мигающей 13-ой ножкой и кучей всяких шилдов, в голову стали закрадываться мысли создать что то стоящее, благо, Китай, всегда готов прийти на помощь материальной базой и не за дорого. Сказано, опять же, сделано! Ну вернее начато делать.
И вот мой вам сказ о том как создавалось нечто, не имеющее официального названия, для осуществления автоматического и дистанционного управления поливом. К слову сказать, система вышла настолько универсальной, что её можно использовать не только в ирригационных работах, но и в любом, мало-мальски управляемом дистанционном устройстве коммутации или в простом домашнем будильнике.

Часть 2. Идейная.

Правильная постановка задачи, сокращает процесс разработки на 20% процентов или вообще его ликвидирует за полной ненадобностью. Шутка!
Итак, нам необходимо:

1. в определённый момент времени, включить систему полива и, затем, в определённый момент, насытив землю живительной влагой, эту систему выключить.

Простая идея обросла дополнительными желаниями:

2. определённых моментов на дню может быть несколько,
3. да и систем полива тоже может быть больше одной (у меня их две),
4. да и моменты включения должны зависеть от дня недели,
5. да и управление этой системой должно находиться дома, что бы не стоять под дождём настраивая её на новый лад, т.е. дистанционная составляющая должна быть.

Для начала, подумал я, вполне достаточно, дальше будем думать потом.

Часть 3. Действующие лица и исполнители.

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

«Внешний» модуль.


1. Для организации включения и выключения системы полива «моим» садовником был предложен соленоид Bermad S-390-2W-24VAC-R.

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

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

Тут тоже не принципиально ибо система была рассчитана вообще на 8 каналов, но об этом позже.

3. Естественно, куда же без этого — сердце любого модуля Arduino, в конкретном случае, я использовал Arduino Nano, полностью удовлетворяющий всем моим требованиям компактности и производительности.

4. Последним, по порядку, но далеко не по значимости, во «внешнем» модуле системы автоматического полива идёт модуль NRF24l01 для общения с «домашним» модулем, простой, опять же компактный и легко идущий на программирование.

Не долго мудрствуя, на просторах интернета, нашёл хорошую схему подключения этих элементов от некого HACK.LENOTTA() огромное ему за это спасибо. Вот привожу его схему для всеобщего обозрения.
Я уже говорил, что управлять можно не только поливом, в данном случае вот например этой лампой.

«Домашний» модуль.

1. NRF24l01 — чтобы было чем разговаривать с внешним модулем.
2. Arduino Nano — чтобы было чем думать.
3. RTC модуль для того чтобы знать когда говорить.

Опираясь на предыдущую схему от HACK.LENOTTA(), я набросал свой вариант «домашнего» модуля.

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

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


0 комментариев на «“Не дай себе засохнуть … или о том, как программист создавал первое в своей жизни устройство на базе Arduino”»

  1. Хорошая статья.
    Интересный текст разбавленный шуткам, картинками и ссылками на модули=)
    Сразу хочется перейти на следующую статью)

    • Спасибо, большое, надеюсь новые статьи, будут не менее увлекательны и интересны… Буду стараться…

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение