Это – мой душевный порыв сделать мир немного лучше, особенно той его части, которая ближе всего ко мне. Да, я не новатор, и другие уже предлагали море своих вариантов и тут и там:
Даже прослеживается какая-то эволюция. Постараемся выстоять со своим вариантом.
В своей реализации я пытался добиться гармонии между фанатизмом и ленью, т.е. сделать все без лишних сложностей (своими руками, никаких [5]). И вот что вышло.
Хороша ложка к обеду, потому нашей целью был умеренный полив по расписанию. Да, как написано в [3], можно обойтись и без микроконтроллеров, но мы не хотим растворять сенсоры в горшках цветов как автор выше, повторяя школьные опыты по электролизу. Поэтому мы будем использовать микроконтроллер.
Мой выбор пал на Attiny13A. Тут несколько факторов:
— автополивалка не для демонстрации, а для реального долгосрочного полива. Arduino([4]) и Edison([6]) для такого жалко, разве что процесс отслеживать по wi-fi, но это уже всем известная «ферма» получится. В результате выбрал, что не жалко.
— если честно, постигать ассемблер не хотелось, а предварительно погуглив, выясняется, что добрые люди постарались и прошиться можно через Arduino Software (IDE), что облегчает жизнь. Ну лично мне.
Потом, само собой, насос. Выбрал из дешевых погружаемый (3-6в, максимальный ток 100 мА, в результате врезал снаружи), у нас не промышленные масштабы, потому справится. Единственный критерий был – разумное потребление тока и напряжение не больше 9 вольт, чб запитаться от батарейки и не мучиться (вариант [2] со смывателем стекла для ВАЗ не годился из-за прожорливости и напряжения питания, для меня это повышение уровня сложности в разы).
Конечно, датчик влажности – FC-28. Плюс – в наличии цифрового выхода; опять же, меньше проблем с таррировками.
Питание – от батарейки, розеток на балконе нет, да и мобильность – это всегда хорошо.
И светодиод – чб понимать, что все работает.
Итого основа:
1. Attiny13A
2. Насос
3. Влагометр FC-28
4. Питание от батарейки
5. Светодиод
Остальные компоненты зависят от фантазии уже лично каждого исполнителя. Я выбрал питание от кроны 9В, но датчик влажности и микроконтроллер 5В, насос 3-6В. Поэтому мне понадобятся 2 стабилизатора напряжения 78L05 (для насоса будет отдельный). И поскольку запитать насос от ножки микроконтроллера напрямую нельзя из-за ограничений по току, нужно будет собрать для него отдельный ключ, я выбрал для этого транзистор 2N7000. Остальное – сопротивление, диоды, конденсаторы – это «бантики», что бы все работало правильно и ничего не сломалось.
Прошиваем микроконтроллер для работы по следующему алгоритму:
— включились и мигнули светодиодом;
— включили влагометр, подождали 3 секунды, чб стабилизировались показания, сохранили показания, выключили влагометр;
— если сухо – включаем на 12 секунд насос;
— далее с интервалом 10 секунд мигаем светодиодом, чб видно было, что есть питание и все работает, и так полчаса (180 раз);
— через полчаса все начинается заново с включения влагометра (поскольку влагометр и подача воды в разных местах, то ждем полчаса, чб влага распределилась равномерно, а то можем устроить болото).
Для прошивки использовался программатор USBasp + Arduino IDE 1.6.6 + профикшеное ядро v0.22 для Attiny13. Прошивал на частоте 1,2.
Полезные ссылки:
— Советы по прошивке и возможность задать вопросы тут.
- Поливаем цветы – просто и быстро
- Умная поливалка цветка на микроконтроллере Attiny13A
- К вопросу об «умной поливалке» на микроконтроллере
- Делаем автополив комнатного цветка на Arduino за 15 минут
- Автополив цветов: автоматизируем регулярные задачи
- Примеры кода для интернета вещей: умная поливалка
Даже прослеживается какая-то эволюция. Постараемся выстоять со своим вариантом.
В своей реализации я пытался добиться гармонии между фанатизмом и ленью, т.е. сделать все без лишних сложностей (своими руками, никаких [5]). И вот что вышло.
Хороша ложка к обеду, потому нашей целью был умеренный полив по расписанию. Да, как написано в [3], можно обойтись и без микроконтроллеров, но мы не хотим растворять сенсоры в горшках цветов как автор выше, повторяя школьные опыты по электролизу. Поэтому мы будем использовать микроконтроллер.
Мой выбор пал на Attiny13A. Тут несколько факторов:
— автополивалка не для демонстрации, а для реального долгосрочного полива. Arduino([4]) и Edison([6]) для такого жалко, разве что процесс отслеживать по wi-fi, но это уже всем известная «ферма» получится. В результате выбрал, что не жалко.
— если честно, постигать ассемблер не хотелось, а предварительно погуглив, выясняется, что добрые люди постарались и прошиться можно через Arduino Software (IDE), что облегчает жизнь. Ну лично мне.
Потом, само собой, насос. Выбрал из дешевых погружаемый (3-6в, максимальный ток 100 мА, в результате врезал снаружи), у нас не промышленные масштабы, потому справится. Единственный критерий был – разумное потребление тока и напряжение не больше 9 вольт, чб запитаться от батарейки и не мучиться (вариант [2] со смывателем стекла для ВАЗ не годился из-за прожорливости и напряжения питания, для меня это повышение уровня сложности в разы).
Конечно, датчик влажности – FC-28. Плюс – в наличии цифрового выхода; опять же, меньше проблем с таррировками.
Питание – от батарейки, розеток на балконе нет, да и мобильность – это всегда хорошо.
И светодиод – чб понимать, что все работает.
Итого основа:
1. Attiny13A
2. Насос
3. Влагометр FC-28
4. Питание от батарейки
5. Светодиод
Остальные компоненты зависят от фантазии уже лично каждого исполнителя. Я выбрал питание от кроны 9В, но датчик влажности и микроконтроллер 5В, насос 3-6В. Поэтому мне понадобятся 2 стабилизатора напряжения 78L05 (для насоса будет отдельный). И поскольку запитать насос от ножки микроконтроллера напрямую нельзя из-за ограничений по току, нужно будет собрать для него отдельный ключ, я выбрал для этого транзистор 2N7000. Остальное – сопротивление, диоды, конденсаторы – это «бантики», что бы все работало правильно и ничего не сломалось.
И после изысканий и легкой гуглоруки получаем принципиальную схему
Прошиваем микроконтроллер для работы по следующему алгоритму:
— включились и мигнули светодиодом;
— включили влагометр, подождали 3 секунды, чб стабилизировались показания, сохранили показания, выключили влагометр;
— если сухо – включаем на 12 секунд насос;
— далее с интервалом 10 секунд мигаем светодиодом, чб видно было, что есть питание и все работает, и так полчаса (180 раз);
— через полчаса все начинается заново с включения влагометра (поскольку влагометр и подача воды в разных местах, то ждем полчаса, чб влага распределилась равномерно, а то можем устроить болото).
И сам код
#define hydrometr PB1
#define hydrometrData PB4
#define pump PB0
#define indicator PB2
void setup() {
pinMode(hydrometr, OUTPUT); // питание на влагометр
pinMode(pump, OUTPUT); // питание насос
pinMode(hydrometrData, INPUT); // показания влагометра: 1- сухо; 0- влажно.
pinMode(indicator, OUTPUT); // индикатор
digitalWrite(pump, LOW); //выключаем насос
digitalWrite(hydrometr, LOW); //выключаем влагометр
digitalWrite(indicator, HIGH); //включаем индикатор
myDelay(1000);
digitalWrite(indicator, LOW); //выключаем индикатор
}
void loop() {
digitalWrite(hydrometr, HIGH); //включаем влагометр
myDelay(3000);
boolean waterSensor = digitalRead(hydrometrData); //показание влагометра
myDelay(100);
digitalWrite(hydrometr, LOW); //выключаем влагометр
myDelay(1000);
if (waterSensor == true) { //если влагометр показывает засуху
digitalWrite(pump, HIGH); //включаем насос
myDelay(12000);
digitalWrite(pump, LOW); //выключаем насос
}
myDelay(1000);
indicatorLight();
}
void indicatorLight() {
byte iStart = 0;
byte iEnd = 180;
while(iStart < iEnd){
digitalWrite(indicator, HIGH); //включаем индикатор
myDelay(1000);
digitalWrite(indicator, LOW); //выключаем индикатор
myDelay(9000);
iStart++;
}
}
void myDelay(unsigned long delayMs) {
unsigned long startMs = millis();
while(1){
unsigned long nowMs = millis();
if ((nowMs - startMs) > delayMs) {
break;
}
}
}
Для прошивки использовался программатор USBasp + Arduino IDE 1.6.6 + профикшеное ядро v0.22 для Attiny13. Прошивал на частоте 1,2.
Несколько фото
Полезные ссылки:
— Советы по прошивке и возможность задать вопросы тут.