Тут недавно выяснилось, что есть люди, которым интересны мои экзерсисы в любительской электронике. 8) Ну, давайте, расскажу.
Во-первых, кто вдруг не видел,
подробный отчёт о свадебных приглашениях.
Во-вторых же, неудавшийся по объективным причинам проект с датчиком влажности в горшке.
Идея была такая. В доме много горшков с растениями. Их надо поливать. Но в каких-то земля сохнет быстрее, в каких-то медленнее. Так что, было бы полезно знать, где сейчас высохло и пора поливать.
То есть, нужен датчик влажности земли в горшке. При этом:
- он должен быть дешёвый, чтобы можно было везде напихать.
- он должен жить без смены батарей подолгу, по тем же причинам
- Требование от Анитры: никакие провода не должны связывать горшки друг с другом или с подоконником/полкой.
- Он должен настраиваться на определённый порог срабатывания, потому что мало ли.
- Ну и влага не должна повреждать девайс по возможности.
Ну, всё просто, казалось бы. Нам нужна платка с питанием от CR2016 или CR2032, потому что у меня для них держатели остались. Контроллер поменьше и поэкономичнее, возьмём ATTiny25 или 45, неважно. Надо как-то сигнализировать о сухости, значит светодиод. И надо же как-то мерять эту сухость. То есть, влажность. Полез искать, нашёл датичик с разъёмом grove, вот такой:
Вроде, ничего. Но для куска платы с парой компонентов стоимость в 430 рублей это нафиг. Кроме того, его вглубь не зароешь. Разъёмы, все дела. Значит, надо делать самому. Порыл ещё, нашёл вот такой:
Выглядит так же, а стоит уже 120 рублей. 8) И к нему прилагается
схема.
То есть, всё понятно, меряем сопротивления между двумя зубами (PAD1 и PAD2). Сопротивление, видимо, меняется в небольших пределах, поэтому ставим транзистор со схемой включения "с общим коллектором". То есть, если сопротивление горшка бесконечно, то ток на базу не течёт и выход замкнут на землю. А если сопротивление горшка упало, то ток на базу чуточку течёт, транзистор приоткрывается и на выходе уже не ноль. Резисторы должны быть такие, чтоб транзистор работал в режиме усиления. На схеме оба по 100 Ом, поверим ей.
Ладно, сделал я отдельный закапываемый датчик на проводке. Ну, то есть, как датчик... Два контакта на проводке, всё.
Сорри, качество съёмок тут подкачало...
Дальше сделал платку, повторяющую схему датчика, с транзистором и двумя резисторами:
Воткнул в Ардуино, проверил, заработало. Ну отлично, сделал плату всего остального датчика. Без вот этого усиливающего транзистора, потому что он уже есть на отдельной плате. Думаю, если заработает, можно будет следующие платы уже цельные делать. Получилось вот:
Справа вверху это разъём для программирования.
Обрывки синих дорожек произошли от того, что сначала я плату вытравил, а потом стал исправлять ошибки в схеме перемычками на задней стороне. 8)
Зелень, кстати, это цапон-лак, призванный защищать всё от брызг воды.
Выглядит всё в сборе так:
А дальше самое интересное. Во-первых, написал прошивку. Влажность мерять и засыпать для энергосбережения. Перед сном зажигать или гасить светодиод. А ещё при включении пробовать соединиться по SPI в слейв-режиме через прошивательный разъём. Это чтобы можно было в реальном времени следить за показаниями. Слейву нужен мастер, так что написал простенькую прошивку для Ардуины, которая посылает-получает данные датчику и отражает происходящее в виртуальный COM-порт. А на компе стандартный драйвер ардуинского порта. И можно в консоли смотреть на показания датчика. Ну, дальше меня немного понесло и я накатал гуи со шкалой и стрелочкой. 8) Ладно. Всё завелось, всё работает, хоть иногда связь по SPI и теряется, но ничего, понять происходящее можно. Исправил баги, торжественно запустил.
Несколько дней гордо напоминал Анитре посмотреть на светодиод. Потом батарейка сдохла.
Ладно, повыключал неиспользуемые части кристалла, перешёл на пробуждение от Watchdog вместо обычного таймера, замерил потребление тока до и после, стало хорошо. То есть, расчёт програмкой
Electrodroid (кстати, очень рекомендую) показал разряд батарейки больше, чем через год, что окей.
Запустил. Через неделю с небольшим батарейка сдохла. Короче, оказалось, что контроллер в спящем режиме и измерение влажности тратят мало электричества. А вот зажжённый светодиод относительно много. Забыл полить - пол-батарейки съелось.
На этом всё, проект закрыт. 8) Потому что неделя жизни на одной батарейке это мало. Да хоть бы и месяц. Подключать к внешнему блоку с парой AA нельзя по требованиям. Есть мысли, что с этим можно сделать, но об этом потом. И всяко выйдет дороже... Так, что, возможно, новое решение, если получится, будет переименовано в "датчик протечек", таких меньше в дому надо. 8) И, кстати, датчик протечек может и от пары AA работать, под мебелью не видно всё равно.
А вот, если кому,
код.