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

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



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

Общая схема системы:



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

Несмотря на то, что ESP8266 появился на горизонте DIY-сообщества совсем недавно, в рунете уже активно развивается ресурс разработчиков на этом чипе, где Вы всегда можете поискать ответ на интересующий Вас вопрос, найти пример подключения конкретной ESP платы или попросить помочь с возникшей проблемой.

Смета проекта


Для контроля текущей влажности почвы был заказан стандартный датчик с Ebay.

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

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

В качестве ESP8266 на Ebay была заказана простейшая его версию – ESP-01. Главное – помнить, что ESP8266 питается исключительно от 3,3 В, о чём нужно позаботиться заранее.

Список необходимого оборудования:

  • Механизированный кран
  • Arduino Mega
  • WiFi модуль (ESP8266)
  • 4-х канальное реле
  • Датчики влажности почвы
  • LCD дисплей с кнопками

Итоговая стоимость (без учета стоимости всего необходимого для пайки, сборки, а также блока питания): $61,01. Основной вклад в конечную стоимость моей системы внесли механизированный кран ($23,32) и Arduino Mega 2560 official ($26,80).

Функционал системы


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

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

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

Blynk


Размышляя над реализацией удаленного управления поливом, я наткнулся на интересный проект Blynk, сбор средств на реализацию которого был запущен на Kickstarter 16 января 2015 г.

За месяц проект собрал $49,235 вместо $10,000, что, по всей видимости, отражает огромный интерес к такого рода проектам со стороны мирового гик-сообщества.

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

Полный список поддерживаемых платформ (среди которых, безусловно, есть Arduino, Raspberry PI и Intel Edison), на которые планируется портировать Blynk, находится тут.

Схематично принцип работы Blynk представлен на следующем рисунке:

image

В списке интерфейсных возможностей программы для смартфона по управлению удаленным устройством и отображению получаемой от него информации анонсировано широкое разнообразие элементов («widgets»). Выделим основные из них:

  • Кнопки;
  • Слайдеры;
  • Одноосные и двухосные джойстики;
  • Управление с помощью гироскопа и акселерометров телефона;
  • Различного рода ручки управления;
  • Графики;
  • Стрелочные индикаторы;
  • Всплывающие уведомления.

Полный перечень элементов можно найти на странице проекта Blynk на Kickstarter.

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

Техническая реализация


Принципиальная схема устройства:



Как видно из представленной схемы, обмен информацией между Arduino и ESP8266 будет осуществляться посредством UART. Чтобы не испытывать проблем при перепрошивке контроллера, Wi-Fi модуль подключим к контактам D2, D3, организовав на этих ножках аппаратный UART (Serial3) и установив скорость в 11520 бод.

У внимательного читателя должен возникнуть логичный вопрос – каким образом будут общаться работающий на 5-вольтовой логике Arduino и 3,3-вольтовый ESP8266? Изучив этот вопрос в Интернете, я пришел к выводу, что большинство не придаёт этой проблеме абсолютно никакого значения (как выяснилось позже – не зря), напрямую соединяя соответствующие ножки этих двух плат. Лишь в нескольких статьях было предложено использовать простейший делитель напряжения, либо специально разработанные преобразователи. Преобразователя у меня естественно не было, поэтому сначала была предпринята попытка реализовать общение с помощью делителя, однако она не привела к каким-либо результатам, и я присоединился к упомянутому выше множеству закрывающих глаза на описанную проблему (благо все заработало и без согласования логических уровней).

Несколько слов о питании ESP8266


Как уже упоминалось во многих туториалах, для нормальной работы ESP необходимо стабильное питание в диапазоне 3,0-3,6 Вольт. Для этого можно использовать различные линейные преобразователи, например, популярный сегодня AMS1117 3.3. В даташите на AMS1117 указано, что входящее напряжение может достигать 15 В. Однако для стабильной работы в режиме выходного тока порядка 1 А рекомендуется понижать входное напряжение (на практике достаточно 5-6 В). По своему опыту скажу, что при подключении преобразователя к источнику 12 В начинается активный нагрев AMS, что быстро приводит к уменьшению выдаваемого напряжения и, как следствие, перезагрузке ESP8266.

Настройка ESP8266


Взаимодействие Arduino и ESP8266 при использовании Blynk можно реализовать двумя различными способами:

  • Использовать «родную» для ESP8266 AT-прошивку, а всю логику управления передать Arduino (т.н. режим «ESP8266 as shield»);
  • Залить в ESP написанный в Arduino IDE скетч с библиотекой Blynk, тем самым передав модулю управление данными, передающимися в мобильное приложение, а Arduino использовать для обработки команд ручного управления, данных с датчика влажности и открытия/закрытия крана (т.н. режим «ESP8266 as standalone»).

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

Для осуществления управления с помощью Blynk необходимо умение залить нужную прошивку на ESP8266. В нашем случае будет использована версия AT-прошивки v0.22 SDK v1.0.0.

Для прошивки плат ESP8266 необходим USB-TTL преобразователь (например, такой), однако, можно использовать и Arduino, замкнув на нем ноги RST и GND между собой, и подключив RX Wi-Fi модуля к RX ноге Arduino, аналогично ТX к TX. Далее переводим ESP8266 в режим перепрошивки (для этого замыкаем выход GPIO0 на землю), и с помощью утилиты XTCom Util заливаем прошивку, как описано здесь. Остаётся только увеличить скорость UART до 115200 бод с помощью AT-команды AT+UART_DEF=115200,8,1,0,0, после чего настройка Wi-Fi модуля будет завершена.

Скетч для Arduino


Основной библиотекой для работы с Blynk под Arduino IDE является библиотека BlynkSimpleEsp8266.h. Рассмотрим основные ее функции.

1) Blynk.begin(auth, «ssid», «pass»)
Как Вы уже догадались, функция получает параметры подключения к Wi-Fi точке – ее SSID и пароль, а также auth token нашего устройства для подключения к Blynk server.

Важно! Процесс подключения к Blynk server начинается только после того, как в программе будет впервые вызвана любая из следующих функций: Blynk.run() или Blynk.connect().

Для отключения/подключения к Blynk server используются функции Blynk.disconnect() и Blynk.connect(), возвращающие результат в булевом типе. Для установления подключения (таймаута в секундах) используется Blynk.connect(s) (по умолчанию таймаут установлен в 30 с).

2) Blynk.run()
Основная функция для синхронизации устройства с Blynk server и получения команд со смартфона. Обычно используется в цикле loop. Кроме того, эта функция позволяет управлять входами и выходами ESP платы (в режиме «Standalone»), не используя нигде в коде такие функции, как digitalRead, digitalWrite, analogRead, analogWrite. Достаточно в приложении на смартфоне добавить на экран управления нужные элементы и соотнести их с нужными GPIO ESP8266.

3) Работа с виртуальными контактами («Virtual Pins»)
Одной из особенностей Blynk является использование виртуальных контактов. Под этим термином понимается логический канал для передачи различной информации между мобильным приложением и устройством, будь то булевы переменные, численные величины (integer или long) или текстовые данные в виде строки. Виртуальные контакты не имеют прямой связи с выводами устройства и используются преимущественно для взаимодействия с библиотеками периферийных модулей (LCD, сервоприводы и пр.) или интерфейсом мобильного приложения.

В коде скетча обработка обращения к виртуальному контакту с номером n происходит с помощью блоков BLYNK_READ(Vn){…} и BLYNK_WRITE(Vn){…}. Внутри фигурных скобок указывается код обработки обращения к виртуальному контакту. Например, если виджет приложения запросит по виртуальному контакту №2 значение влажности почвы для отображения в виде графика, то нам потребуется в скетче прописать что-то наподобие:

BLYNK_READ(V2)
{
//отправляем в приложение текущее значение влажности, хранящееся в переменной humidity:
  Blynk.virtualWrite(2, humidity);
}

Аналогично можно считать параметр, отправляемый, например, через виртуальный контакт №9 от пользователя приложения Blynk:

BLYNK_WRITE(V9)
{
//Записываем полученное значение в целочисленную переменную x:
int x = param.asInt();
}

Здесь используется преобразование входной переменной в целочисленное значение с помощью param.asInt(). Также допустимы преобразования param.asStr() и param.asDouble().

Важно! Процедуры BLYNK_READ/BLYNK_WRITE должны исполняться как можно быстрее, дабы устройство успевало обрабатывать все входящие от приложения запросы. Поэтому настоятельно не рекомендуется использовать функции sllep/delay внутри таких подпрограмм.

Более подробную информацию по функционалу Blynk можно найти на странице github разработчика в папке examples или на странице docs.

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

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

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

Скетч можно скачать на GitHub.

Настройка мобильного приложения Blynk


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

  • 4 световых индикатора «led» (Virtual Pins 1, 29, 30, 31);
  • 2 кнопки (Virtual Pins 2, 3);
  • Терминал для обмена информацией (Virtual Pin 4);
  • Числовой индикатор «Value Display» (Virtual Pin 8);
  • График с возможностью отображения исторических данных «History Graph» (Virtual Pin 8);
  • Виджет для активации работы с почтой («Email»);
  • Виджет для активации всплывающих уведомлений («Push»).

После установки мобильного приложения Blynk необходимо зарегистрироваться и выбрать устройство, которым необходимо управлять (в нашем случае это ESP8266). Далее, чтобы не потерять, отправляем себе на почту уникальный auth token, который используется в скетче для аутентификации на серверах Blynk. Ниже – скриншоты, иллюстрирующие настройку приложения.

Создаём новый проект


В открывшемся окне созданного проекта в правом верхнем углу 3 кнопки: глобальные настройки проекта, добавление элементов (виджетов) на форму и запуск:

Пустая форма нового проекта


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

Список виджетов для добавления на форму приложения


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

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

Настраиваем led-индикаторы и кнопки


Для отображения динамики влажности почвы добавим на форму график с возможностью отображения исторических данных («History Graph»). Текущее значение влажности будем отображать на числовом дисплее («Value Display»).

Добавляем элементы History Graph и Value Display


Для удобства удаленной настройки параметров системы, а также получения более полной информации о текущем состоянии добавим в приложение терминал. А для получения уведомлений на почту и телефон необходимо поместить на форму еще и элементы «Push» и «Email».

Добавляем элементы Terminal, Push и Email


Осталось разместить на форме все описанные выше виджеты и мы получим что-то наподобие этого:



Результат


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

Фотография №1:



Фотография №2:



Видео:



Вместо заключения


Подводя итоги создания системы автополива с использованием Blynk можно сказать следующее:

1. Сам по себе сервис Blynk является очень удобным и простым для освоения инструментом, который, благодаря обилию поддерживаемых плат и устройств, легко интегрируется практически в любое устройство. Вкупе с низкой ценой Wi-Fi модуля ESP8266 указанные преимущества позволяют осуществить добавление удаленного управления в конкретный проект с наименьшими усилиями.
Минусами использования такого решения, безусловно, является меньшая гибкость в настройки системы под себя и зависимость от разработчиков приложения, что, однако, нисколько не снижает его заслуг при использовании в небольших DIY-проектах.

2. Двумя основными недостатками описанной выше реализации системы автоматического полива являются её стоимость и низкое качество используемого датчика влажности почвы.

Первый недостаток обусловлен, как уже упоминалось выше, высокой стоимостью электромагнитного крана и официальной платы Arduino Mega. Однако её можно существенно снизить, используя, например, Arduino-аналоги или реализуя всю электронную часть на другом подходящем МК. Кран, к сожалению, существенно дешевле найти не удалось, да и цели такой передо мной не стояло.
Что касается датчика влажности, то для увеличения его срока службы и уменьшения продуктов электролиза между его контактами, во-первых, необходимо подавать на него напряжение только непосредственно перед измерением влажности (что и реализовано в моей системе), а, во-вторых, лучше заменить его либо на графитовые стержни, либо использовать контакты из нержавеющей стали.

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

Спасибо за внимание!

Комментарии (33)


  1. Duti_Fruti
    29.12.2015 14:18

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


    1. e_butcher
      29.12.2015 14:29

      Полностью согласен. Но цели максимально удешевить проект передо мной не стояло. «Заказчик» со сметой согласился при предварительном расчете стоимости, да и LCD keapad shield проще использовать с Mega или Uno.


      1. Duti_Fruti
        29.12.2015 14:41

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


      1. av0000
        29.12.2015 14:46

        Ещё один повод полистать что-то про blynk. А то как тот осёл — всё выбираю, на чём городить датчики… OpenHAB-MQTT-MySensors-Domoticz-ещё что-то…

        Согласен с Duti_Fruti — вполне хватило бы ESP8266-7 (например) на всё, в т.ч. дисплей по I2C/SPI и ещё бы «ноги» остались. или напрямую на кнопки, или через 74HC165. А если ещё загонять всё в сон и приладить LiPo+TP4056+солнечную батарейку — так и посреди огорода без проводов можно будет установить… Хотя тут уже лучше NRF24L01 — там со «сном» всё нормально — и «шлюз», хоть на той же ESP, во внешний мир…


    1. Hellsy22
      29.12.2015 14:57

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

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

      https://docs.google.com/spreadsheets/d/1WsIvEWQ3veDjyQixo74EVjJ24cvcGDloxeOIXSvk_Ts/

      Немного данных для статистики. Колонка «timer» растет, пока ESP работает стабильно, если ESP 30 секунд не подает признаков жизни — ардуина его перезагружает. Лучший результат пока составил 21 день.


      1. Duti_Fruti
        29.12.2015 15:12

        Были за ним грехи в виде зависаний. Но с нормальным питанием и стабильным wifi становилось приемлемо. Еще много зависело от версии SDK. Пол года не следил за обновлениями. Неужели не стало лучше?


      1. e_butcher
        29.12.2015 15:15
        +1

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


      1. av0000
        29.12.2015 16:36

        Это — да… Подумываю про внешний watchdog.

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

        Есть «фича» — если USB-TTL подключён, всё нормально. Если отключить, то из отключения питания может не вернуться. Вроде где-то мелькало, что подтяжка TX как-то решает — буду пробовать на новых платах, благо — десяток из Китая приехал.


    1. valis
      29.12.2015 18:55

      Именно это решение я ожидал увидеть, открывая статью.


  1. Speccyfan
    29.12.2015 15:30

    каким образом будут общаться работающий на 5-вольтовой логике Arduino и 3,3-вольтовый ESP8266? Изучив этот вопрос в Интернете, я пришел к выводу, что большинство не придаёт этой проблеме абсолютно никакого значения (как выяснилось позже – не зря), напрямую соединяя соответствующие ножки этих двух плат. Лишь в нескольких статьях было предложено использовать простейший делитель напряжения, либо специально разработанные преобразователи. Преобразователя у меня естественно не было, поэтому сначала была предпринята попытка реализовать общение с помощью делителя, однако она не привела к каким-либо результатам, и я присоединился к упомянутому выше множеству закрывающих глаза на описанную проблему (благо все заработало и без согласования логических уровней).

    И зря, я долго мучался с ESP, пока не пришел к обязательному согласованию уровней, не только RX, но и Reset надо подлючать через делитель напряжения. В противном случае ESP греется и иногда ребутится. Так же рекомендую в ардуине включить watchdog, конечно, как и сами уже написали, все собрать на нормальной плате и поместить в корпус.


    1. Hellsy22
      29.12.2015 15:38

      Греется, ага. Кмк, удобнее использовать Arduino Pro Mini — там рабочее напряжение те же 3.3В.

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


  1. doom369
    29.12.2015 15:48
    +3

    Огромное спасибо за статью. Я являюсь разработчиком Блинка. Если у кого-то есть вопросы по нему — буду рад ответить.


    1. e_butcher
      29.12.2015 15:52
      +2

      Ну наконец-то можно будет написать разработчику Blynk напрямую, да еще и на русском языке! Ради этого стоило написать статью.


      1. doom369
        29.12.2015 15:56

        Та ладно =). Мы всем отвечаем и на русском нам пишут довольно много. Кстати, Россия на втором месте по пользователям после США.


    1. Meklon
      29.12.2015 19:09
      +1

      О. Офигенно. Интереснейший проект. Только один вопрос — в отсутствие вашего сервера все превращается в тыкву? Или есть возможность поднять серверную часть у себя?


      1. doom369
        29.12.2015 19:24

        Или есть возможность поднять серверную часть у себя?


        Да. Можно поднять сервер у себя. Это делается за 2 минуты. В том числе и на распбери Пи.

        Скоро так же сделаем Блутуз и Direct Connect для ESP. Тогда интернет не нужен будет вообще.


        1. Meklon
          29.12.2015 19:30

          Чудесно. Пошёл искать купленные радиомодули. А как монетизируется проект, если не секрет? Премиум ползунки/кнопки или продажа приложения?


          1. doom369
            29.12.2015 19:41

            Пока что никак (живем на деньги с кикстартера + уже есть 1 комерс клиент). Планируем фримиум + подписка на расширенную версию.


            1. e_butcher
              29.12.2015 19:46

              А как работает функция шаринга? Я имею в виду то, что предлагается в настройках проекта:


              1. doom369
                29.12.2015 19:50

                Кликаете на ON, генерите QR код, с другого телефона сканите QR и получаете управление над проектом который зашарили. Тут детали. Очень мощная фича.

                Юз кейс. Сделали вы устройство, что открывает двери через телефон. Зашарили доступ жене, бац, жена уже тоже может открывать двери со своего телефона, при этом ей нужуно только сосканить QR.


                1. e_butcher
                  29.12.2015 19:53

                  Это я понимаю. Вопрос — что через 30 дней произойдет?


                  1. doom369
                    29.12.2015 20:00

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


  1. KonstantinSoloviov
    29.12.2015 18:38
    +2

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

    Ну, зачем же так!
    Проблема легко разрешается тремя резисторами вот (извините за самоцитирование)
    habrastorage.org/files/b8c/c8a/742/b8cc8a7420074c1cbd9d9e1851f5a09b.png
    см. R11,R12,R13
    с ESP8266 этот фокус тоже работает на отлично!
    Подключение к RX напрямую приводит к тому, что создается паразитное питание ESP8266 через защитный диод на входе ESP8266, не говоря о том, что выход TX mega тоже перегружен.
    А потом жалуемся на нестабильность чего-то там…


    1. e_butcher
      29.12.2015 19:03

      KonstantinSoloviov ух-ты, спасибо за ликбез!


  1. Meklon
    29.12.2015 19:23

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

    Можно для особо ответственных вариантов брать banana-plug с гальванозолотом. Но дорого.
    image


    1. e_butcher
      29.12.2015 19:39

      Спасибо. Не поверите, но он уже сгнил) За 2 месяца. При том, что я импульсами подаю на него напряжение.


      1. Meklon
        29.12.2015 20:03

        Поверю) я на этих граблях основательно танцевал. В идеале нужен переменный ток.


        1. KonstantinSoloviov
          30.12.2015 18:18

          Мне почему-то кажется, что тогда коррозия съест равномерно оба :)
          Кстати «переменный ток» двумя пинами создается, по аналогии с питанием ЖКИ.


          1. Meklon
            30.12.2015 18:44

            Нет, не съест. При частотах выще 10 кГц, примерно, ток не оказывает поляризующий эффект на ионы. Они не летят к конкретному электроду, а вибрируют из-за смены полярностей. Тупо нагрев небольшой идет. Это особенно важно, если датчик в горшке с цветком. Цветку конец придет, если медь в раствор уйдет.


            1. 0tt0max
              30.12.2015 20:53

              Я так думаю здесь можно ШИМ использовать?


              1. Meklon
                30.12.2015 21:02

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


            1. 0tt0max
              30.12.2015 20:58

              Я бы еще питание на датчик подавал через буфер, типа SN754410.


  1. lamazavr
    30.12.2015 17:05

    esp8266 уже само ардуино