Всем привет! В этой статье хочется рассказать, как заставить датчик влажности почвы проработать год на двух батарейках (ААА) и при этом сделать все более менее правильно. Первая статья — про выбор среды разработки (Arduino IDE) и платформу Blynk.


Картинка домашнего дуба для привлечения внимания

Садовод любитель


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

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

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

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

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


Устройство работает, но есть несколько но:

  1. Не понятно на какой уровень влажности настроен бипер.
  2. Если устройств будет больше чем одно, то придется ходить и прислушиваться.
  3. Я ведь тоже так могу.

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

Анализируем энергопотребление


Согласно даташита, ESP8266 потребляет до 170 мА в режиме работы WiFi, 15 мА с выключенным модемом (Modem Sleep) и совсем ничего в режиме Deep Sleep – примерно 10 мкА.

Из потребляющего в нашем устройстве можно выделить WiFi модем, датчик AM2302 (на который подается 3.3 В через повышалку TPS60240DGKR) и мультиплексор (CD74HC4051M96) для коммутации входов АЦП.

Самый большой вклад в энергопотребление вносит WiFi и поэтому первым делом надо заставить ESP8266 стартовать с выключенным радиомодулем. После загрузки в режиме Modem Sleep можно сделать все измерения и только потом включать модем и передавать данные на сервер Blynk (для оптимизации потребления MQTT пока отключил), после чего уже заснуть до следующего раза.

Deep sleeep


При условии, что аппаратно все ноги соединены правильно (RST пин соединен с GPIO16), перевести ESP в режим Deep Sleep можно одной командой:

ESP.deepSleep(sleep_time, WAKE_RF_DISABLED);

sleep_time – время сна в микросекундах, которое можно динамически менять и если, скажем, попытка передать данные не удалась (не работает роутер или не отвечают сервер blynk) – то можно установить таймер на 5-10 минут и после попробовать передать данные снова. А если все хорошо, то после успешного сеанса связи можно уснуть на час или сутки.

WAKE_RF_DISABLED — указывает на то, что проснется модуль с выключенным WiFi модулем.

Работа с WiFi


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

  1. Включаем питание (вставляем батарейки).
  2. Ждем мигание светодиода (в тестовом варианте слушаем бипер).
  3. Нажимаем кнопку и попадаем в WiFiManager.

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

//будим модем
WiFi.forceSleepWake(); 
//устанавливаем режим работы
WiFi.mode(WIFI_STA); 
//чуть чуть ждем
delay(100);
//проверяем, что сохранены параметры сети и делаем begin
if (WiFi.SSID()) WiFi.begin(); 

В некоторых мануалах по оптимизации энергопотребления ESP8266 можно встретить команду WiFi.disconnect(); которая должна отключать модем от текущей WiFi сети. Однако на практике, эта команда удаляет сохраненный в памяти модема SSID() и пароль, поэтому использоваться ее мы не будем.

Считываем датчик AM2302


Для работы с датчиком температуры\влажности также была использована библиотека DHT Sensor Library от Adafruit. В целях экономии, питание на датчик подается не постоянно, а только по сигналу, специально выделенного GPIO. Однако, опытным путем установлено, что датчик достаточно продолжительное время выходит на рабочий режим и адекватные значения влажности (отличные от 99%) начинает выдавать примерно через 5 секунд после подачи на него питания. С одной стороны такая большая задержка на «прогрев» датчика это лишние мА, но возможность управлять питанием датчика AM2302 это скорее плюс, т.к. мы можем пользоваться датчиком не каждый раз или переставать измерять температуру\влажность при снижении заряда батареек.

Измеряем показания на АЦП


АЦП у нас используется для измерения трех параметров: заряд батареек, освещенность и влажность почвы. Для коммутации разных сигналов на вход единственного АЦП — используется мультиплексор (модель).

У ESP8266 АЦП 10-битный, а диапазон измеряемых напряжений 0..1 В. Поэтому в схеме предусмотрен резистивные делители, понижающий все измеряемые сигналы до уровня 1 В. При измерении заряда батареи — все замеры на графике выглядят правильно. Однако оказалось, что по мере снижения заряда батареек начали снижать и показания датчика яркости.


Результаты измерений 4х дней. Яркость снижается вместе с зарядом батареек.

Как оказалось при снижении напряжения питания, у нас пропорционально понижается напряжение, прикладываемое к датчику яркости и как следствие измеренная яркость тоже. Но к счастью, зависимость во всем диапазоне входных напряжений от 3.3В до 2.5В оказалась линейной (в пределах допусков) и исправить проблему можно простой нормировкой результата измерения.


График зависимости максимальной измеренной яркости\влажности в зависимости от заряда батареек

Максимально возможное значение влажности\яркости при текущем заряде батареи можно посчитать по формулам:

q_w = (adcbattery * 4) / 15; // влажность почвы
q_l = (adcbattery * 25) / 101; // яркость

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

float adcRead[3];
void quickSort(float *s_arr, int first, int last){
  if (first < last){
      int left = first, right = last, middle = s_arr[(left + right) / 2];
      do{
        while (s_arr[left] < middle) left++;
        while (s_arr[right] > middle) right--;
        if (left <= right){
          int tmp = s_arr[left];
          s_arr[left] = s_arr[right];
          s_arr[right] = tmp;
          left++;
          right--;
        }
      } 
      while (left <= right);
      quickSort(s_arr, first, right);
      quickSort(s_arr, left, last);
  }
}

void analogReadMedian(){
  adcRead[0] = analogRead(ADCPin);
  delay(10);
  adcRead[1] = analogRead(ADCPin);
  delay(10);
  adcRead[2] = analogRead(ADCPin);
}

void readADC_median(int input){
  switch(input){
    case 1 :
      digitalWrite(BPin, HIGH);
      digitalWrite(C_DHTPin, LOW);
      delay(50);
      analogReadMedian();
      quickSort(adcRead, 0, 2);
      adcbattery = adcRead[1] * 4;
      q_w = (adcbattery * 4) / 15;
      q_l = (adcbattery * 25) / 101; 
      digitalWrite(BPin, LOW);
      break;
    case 2 :
      digitalWrite(BPin, LOW);
      digitalWrite(C_DHTPin, LOW);
      analogWrite(PWMPin, 412);
      delay(50);
      analogReadMedian();
      quickSort(adcRead, 0, 2);
      adcwater = 5*(100 - 100*(adcRead[1] / q_w));
      if (adcwater > 100) adcwater = 100;
      if (adcwater < 0) adcwater = 0;
      analogWrite(PWMPin, 0);
      break;      
    case 3 :
      digitalWrite(BPin, LOW);
      digitalWrite(C_DHTPin, HIGH);
      delay(50);
      analogReadMedian();
      quickSort(adcRead, 0, 2);
      adclight = 100*(adcRead[1] / q_l);
      if (adclight > 100) adclight = 100;
      if (adclight < 0) adclight = 0;
      break;
    default :
      delay(1);
   }
}

Измерение влажности почвы


Для того, чтобы измерять влажность почвы, необходимо на земляной электрод подать напряжение и на другом его конце измерить сколько этого самого напряжения дошло, а сколько «потерялось» в почве. На практике оказалось, что при подаче «единицы» диапазон возможных значений на входе АЦП при нахождении электрода в очень сухой и очень влажной почве — совершенно незначителен, что-то около 100 мВ. Но у братьев из поднебесной было подсмотрено, что надо подавать ШИМ сигнал с частотой 100 кГц и скважностью 50% и в этом случае потери сигнала во влажной почве становятся весьма заметными.

Максимальна частота ШИМ, на которую способен ESP8266 равна около 78 кГц, но как показала практика и при 75 кГц результаты измерений влажности достаточно точные и отражают состояние почвы.

Чтобы активировать ШИМ надо:

//инициализируем GPIO на выход
pinMode(PWMPin, OUTPUT); 
//устанавливаем частоту ШИМ в Герцах
analogWriteFreq(75000); 
//включаем ШИМ, значение 512 соответствует скважности 50%
analogWrite(PWMPin, 512);
//Делаем замеры
//выключаем ШИМ
analogWrite(PWMPin, 0);

Планы на будущее


В данный момент, если проводить все измерения 1 раз в минуту, то комплекта новых батареек (2 шт ААА) хватит на 4 дня или 5760 измерений. Если же делать по 12 замеров в день (раз в два часа), то батареек должно хватить на год как минимум (480 дней).

Но время автономной работы можно еще увеличить, если включать WiFi не каждое «просыпание», а пару раз в день. Но, чтобы это реализовать надо каким то образом отличать одно включение от другого. Оперативная память для этого не годится, т.к. в режиме Deep sleep очищается. Для этой цели мог бы подойти EEPROM, однако на ESP он реализован как часть флеша и писать туда часто не самая лучшая идея (и не самая энергоэффективная).

Но, не все так плохо и в нашем распоряжении еще есть 512 байт RTC памяти, которая прекрасно сохраняет данные в то время, пока чип находится в режиме Deep sleep. Я нашел для себя две новые функции и не успел еще их внедрить в проект.

ESP.rtcUserMemoryWrite(offset, &data, sizeof(data))
ESP.rtcUserMemoryRead(offset, &data, sizeof(data))

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

Заключение


Проект целиком на гитхабе.

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


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

PS. Будет и третья часть.

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


  1. wormball
    06.04.2018 12:19
    +1

    Как хорошо, как хорошо, какое совпадение! Два разных человека изобрели одно и то же устройство и запостили статьи об этом строго одновременно! geektimes.ru/post/299723

    Ну ок, ссылка на другую статью присутствует. Но зачем тогда в обеих статьях употреблять местоимение «я», а не «мы»? Или кто-то палится, или мы имеем честь наблюдать крайне редкое заоблевание — слияние личностей, наподобие протоссов.


    1. a3x Автор
      06.04.2018 12:24
      +1

      Я про софт писал, а товарищ про железо. Спасибо что заметили.


    1. a3x Автор
      06.04.2018 12:31
      +1

      Ну садовод любитель — это я, тут нет никаких мы. А остальное — это незначительные детали.


    1. the_bat
      06.04.2018 12:38
      +1

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


      1. wormball
        06.04.2018 12:49

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


        1. the_bat
          06.04.2018 12:54

          В первой части указано что есть я и коллега.


  1. Mike_soft
    06.04.2018 12:33
    +2

    вы три значения квиксортом сортируете?


    1. a3x Автор
      06.04.2018 12:42

      Да, но обратите внимание на теги под статьей.


    1. NINeOneone
      06.04.2018 16:25
      +2

      А вы под каждое количество значений код сортировки переписываете?


      1. Mike_soft
        09.04.2018 07:09

        нет. я стараюсь изначально применять подходящий алгоритм.


        1. a3x Автор
          09.04.2018 07:11

          Так а как можно три значения отсортировать?


          1. Mike_soft
            09.04.2018 07:39
            +1

            а вам их надо сортировать? вам же нужно найти средний по значению элемент…
            например, так:
            mid=?(a0>max(a1,a2),max(a1,a2),(?(a0<min(a1,a2),min(a1,a2),a0)));


            1. a3x Автор
              09.04.2018 10:30

              Да, мне не столько сортировать, сколько среднее из трех найти надо.


              1. Mike_soft
                09.04.2018 11:12
                +1

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


    1. a3x Автор
      06.04.2018 17:05

      У меня при пяти элементах в массиве — ESP вообще виснуть начала. Так что остановился на стабильных трех.


      1. Mike_soft
        09.04.2018 07:11
        +1

        а прикола ради замените квиксорт на обычный пузырек (при размере массивов до полусотни пузырек в среднем быстрее из-за меньших накладных расходов), и проверьте на ваших 5 элементах. 99.9%, что виснут не будет…


        1. a3x Автор
          09.04.2018 11:58

          Попробую, спасибо!


  1. VladGum
    06.04.2018 12:43
    +2

    Наконец-то первая статья по энергопотреблению Arduino с ESP8266. Спасибо!


    1. a3x Автор
      06.04.2018 12:44

      Мне конечно не казалось, что она прямо первая. Но повозиться пришлось, т.к. полностью готового мануала я не нашел.


      1. fki
        06.04.2018 18:15
        +2

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

        Делал на основе esp8266 «градусник» для народного мониторинга. Пробовал 2 варианта работы:
        1. Просыпаться с выключенным WiFi модемом, собирать информацию с датчиков, включать WiFi модем, перезагружаться, передавать данные, уходить в deep-sleep;
        2. Второй вариант — сохранить настройки WiFi на постоянно в памяти и просыпаться с включенным WiFi модемом и в то время, пока WiFi устанавливает соединение, опрашивать датчики и далее передавать данные, уходить в deep-sleep.

        «Градусник» передает показания 1 раз в 15 минут (2 датчика температуры, давление, напряжение батареи, уровень сигнала WiFi). В первом варианте общее время нахождения вне deep-sleep за цикл передачи было 5-7 секунд, а во втором варианте время бодрствования 1,2-1,4 сек.

        На данный момент передатчик работает с 29 октября 2017. Используются 4 батареи AA икеевские (+ линейный стабилизатор LDO). Сейчас напряжение 5.6 В (на старте было чуть выше 6 В).


        1. a3x Автор
          06.04.2018 18:19

          Да, у меня первая версия работала также. Но я не хочу каждое включение использовать WiFi. Например, если я буду просыпаться 1 раз в час, а результаты измерений слать на сервер 4 раза в день, то может получиться более экономно. Но надо тестировать.


  1. asoloviov
    06.04.2018 13:13
    +1

    Про WiFi.disconnect() и сохраненные SSID / password надо использовать WiFi.persistent(false).
    Это же спасёт от деградации флеш памяти ESP от постоянной перезаписи «креденшиалов» при каждом WiFi.begin()


    1. a3x Автор
      06.04.2018 13:15

      Спасибо, именно этого мне и не хватало.


  1. past
    06.04.2018 13:26

    Можно слать раз в день и если влажность ниже порогового значения.


    1. a3x Автор
      06.04.2018 13:30

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


      1. AlexSky
        06.04.2018 14:14
        +1

        Можно копить данные и отсылать сразу несколько измерений.


        1. a3x Автор
          06.04.2018 14:26

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


    1. a3x Автор
      06.04.2018 13:31

      Опять таки, ночная температура тоже достаточно важный параметр.


  1. AndreyMtv
    06.04.2018 14:43

    А как вы калибровали датчик?
    Ну вот получили вы некое значение напряжения, какой влажности это соответствует? Влияет ли состав почвы на напряжение при одинаковой влажности?


    1. a3x Автор
      06.04.2018 15:59

      Пока я только отнормировал шкалу от 0 до 100%, где 100% соответствует 0 В на входе АЦП (все «ушло» в землю), а 0% — это когда земля сухая (эквивалентно тому, что электрод просто висит в воздухе). Сейчас как раз тестирую, строю графики и пытаюсь придумать какую нибудь градацию шкалы (мокро, нормально, сухо).
      Про состав почвы и прочее пока не думал.


      1. saege5b
        07.04.2018 23:30

        Влажность почвы легко определяется вручную, сушкой и взвешеванием. Есть ГОСТы на эту тему, там всё подробно расписано.
        Тут особой точности не надо, а при аккуратности погрешность будет определяться погрешностью используемых весов.


        1. LorDCA
          07.04.2018 23:40
          +1

          Я как то не уверен что кому то нужны такие сложности. В данном случае влажность понятие субъективное. То есть вот полил и можно отметить что сейчас полито. А когда посмотрел и считаешь что нужно уже поливать, то отметил что сухо. Этого вполне достаточно. Все что посредине можно разметить как угодно, хоть феями разрисовать.
          Иначе вам придется описывать способ калибровки, состав земли и прочее и прочее. И так для каждого горшка…


          1. saege5b
            08.04.2018 00:42
            +1

            Когда будут культуры которые не любят как усушки как и переувлажнения, тут феи вылезут боком.
            В зависимости от того во что посажено может вылезти плесень, тогда проще всё выкинуть чем стерилизовывать имеющееся.
            Могут сгнить(задохнуться) корни, может завестись мошкара или мох.
            На разных этапах развития (и внезапно в разные сезоны года!), растения любят разную влажность.
            Грунт в горшках примерно одинаков.
            Первый попавшийся ГОСТ 28268-89. "Методы определения влажности, максимальной гигроскопической влажности и влажности устойчивого завядания растений"
            Влажность грунта определяется формулой:


            ((м1-м0)/(м0-м))*100%, где
            м — масса пустой ёмкости с крышкой;
            м0 — масса высушенной почвы с ёмкостью и крышкой;
            м1 — масса влажной почвы с ёмкостью и крышкой.


            Сушим 3-10 часов, при температуре 100-110 градусов (можно и выше, но — аккуратно, можно высушить за недельку просто неполивая, а потом довести до кондициии в духовке). Сушка прекращается когда разница масс приближается к нулю.


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


            1. LorDCA
              08.04.2018 03:45
              +1

              А если у бабушки вырастет GUI? Должны ли мы предусмотреть такое развитие событий? Заложим время и бюджет на все подобные варианты?
              Я понятия не имею откуда вы решили что грунт в горшках у всех одинаков. Давайте тогда коротенечно опишите нам химический состав почвы в ваших средних по больнице горшках. Разработайте нам методологию полива, сколько капель на кубический миллиметр почвы нужно вылить что бы не перелить? Что делать с тем кто перелил на 1 каплю?
              Или может вернемся к классике? Это когда для каждого растения организуется свой персональный горшок, с дренажом и прочими слоями по необходимости? А подобный прибор оставим для тех кто заводит кактус, да и тот забывает полить раз в году.


        1. a3x Автор
          08.04.2018 08:41

          Весов мне на подоконнике ещё не хватало. И ведь придётся взвешивать в горшках, а они бывают и пластиковые и керамические и разного размера. А бывают и балконные ящики длинной 80 см. А ещё ведь и растения весьма разные, у имбиря (вчера как раз урожай снял) например клубень растёт. Так что я выбираю метод определения минимума, максимума по неким абстрактным потерям на электроде. А дальше время покажет. Через 6-10 месяцев подробно расскажу что получилось.


          1. dmsav
            09.04.2018 12:55

            А вот про имбирь мне хотелось бы узнать подробнее, если можно.


            1. a3x Автор
              09.04.2018 14:22

              Да рос у меня корень имбиря в горшке и за полгода, объем этого самого корня удвоился, а количество земли осталось таким же. Так что метод взвешивания при наличии «живых жильцов» в горшках — это трудно.


      1. Mike_soft
        09.04.2018 07:06
        +1

        а зря про состав почвы не думали. зависимость сопротивления он наличия солей в растворах очень значительна.


        1. a3x Автор
          09.04.2018 07:12

          Думаю, я дойду и до этого.


  1. dernuss
    06.04.2018 14:46

    и совсем ничего в режиме Deep Sleep – примерно 10 мкА.

    Очень много для совсем ничего;)


    1. a3x Автор
      06.04.2018 16:01

      Ну для батарейки с емкостью 600-1000 мА это не так и много. Все конечно познается в сравнении.


  1. acsent1
    06.04.2018 16:10
    +1

    А как насчет не влажность измерять, а использовать гидрогель?
    Это конечно не так технологично, но у меня после пересадки в смесь гидрогель+земля прям в новую силу растения начали расти


    1. a3x Автор
      06.04.2018 16:12

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


      1. acsent1
        07.04.2018 07:51

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


        1. Meklon
          07.04.2018 14:44
          +1

          Ой там ужас будет с ионным составом потом. Эта фигня очень своеобразно может влиять на pH и соотношение ионов. Накапливает и отдает неравномерно.


  1. SGordon123
    06.04.2018 17:55
    +1

    А во сне ESP может считать импульсы, или просыпаться от внешних событий? хОЧЕТСЯ беспроводной водосчетчик в умный дом на батарейках…


    1. FGV
      06.04.2018 18:00
      +1

      смотря какой сон. тот что deep sleep — неможет, ибо вырублено все.


    1. a3x Автор
      06.04.2018 18:05

      Как я понял, в режиме Deep sleep и Light sleep у него CPU спит и на прерывания не отвечает.
      During Light-sleep, the CPU is suspended and will not respond to the signals and interrupts
      from the peripheral hardware interfaces. Therefore, ESP8266 needs to be woken up via
      external GPIO. The waking process is less than 3 ms.

      Таблица из даташита


    1. FGV
      06.04.2018 18:23
      +1

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


      1. a3x Автор
        06.04.2018 18:54

        Мне во всем этом больше нравится бОльшая гибкость и простота изменения софта. Хочу такие графики строю, а хочу такие. Хочу просыпаюсь 10 раз в день, а хочу раз в неделю. Через Blynk можно разные комбинации настроек менять и применять. Мне бы лично и 6 месяцев на одном комплекте батареек хватило.


        1. FGV
          06.04.2018 19:15

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


          1. a3x Автор
            06.04.2018 19:19

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


    1. olartamonov
      07.04.2018 07:53
      +1

      Для водосчётчика не надо внешних событий. Для водосчётчика надо просыпаться по таймеру каждые 50-100 мс, включать подтяжку на ножке и смотреть, что там. А потом выключать подтяжку обратно, иначе есть шанс посадить батарейку ей.


      1. SGordon123
        07.04.2018 15:50
        +1

        А что по потреблению это может выйти, сколько на батарейке проживет обычной?


    1. mrhru
      08.04.2018 09:29

      Существуют водосчетчики, которые передают данные по BLE.


      1. SGordon123
        08.04.2018 18:00
        +1

        А куда передают? У меня только WiFi ( Gpon от ростелекома), и как бы ничего больше нет…


        1. a3x Автор
          08.04.2018 18:02

          Наверное нужен какой то хаб, который бы данные с BLE датчиков собирал и дальше уже в интернет отправлял.


  1. Bobnecat
    06.04.2018 18:28
    +1

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


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


    Еще одна важная деталь это то что диапазон чувствительности такого датчика будет со временем меняться из-за изменения плотности почвы и заряда батареи. Грубо говоря датчик начнет "дрифтовать", и по этому не имеет смысла привязка выходных показаний к процентам от 0 до 100, если только не придумать какой нибудь хитрый самонастраивающийся алгоритм.


    У самого подобное устройство работает уже больше года от CR2032, только в место ESP я использовал NRF24+atmega отправляющий показания на "базовую станцию".


    1. a3x Автор
      06.04.2018 18:40

      Про электрод — я наверное не очень точно выразился. Я если честно, в физику процесса не вдавался, подаю ШИМ и измеряю что навелось на входе АЦП. Чтобы исключить влияние заряда батареи на результаты измерений — сейчас добавлены коэффициенты. В следующей ревизии железки скорее всего добавим повышалку, так чтобы сигнал ШИМ и сигнал на входе фоторезистора не зависел от заряда батарейки.


    1. a3x Автор
      06.04.2018 18:41

      Влияние плотности почвы и прочее — мне еще предстоит с этим столкнуться. У нас первая версия устройства была с батарейкой CR2032, но 170 мА WiFi модуля сделали практически невозможным хоть сколько долгую работу.


      1. Bobnecat
        06.04.2018 21:24

        Обычный ESP8266 от CR2032 не сможет работать, так как "копейки" не рассчитаны на отдачу таких токов. Не рассматривали вариант с одной базовой станцией и множеством датчиков передающих показания по nrf24l01+? У меня такая реализация, NRF потребляет 900nA в спящем режиме, в связке со спящим Atmega получается всего около 2uA.


        1. dernuss
          07.04.2018 08:01
          +1

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


        1. a3x Автор
          07.04.2018 08:19

          Было много разных идей, вплоть до полностью пассивных датчиков на rfid и одной базовой станции на esp. Идей больше чем времени в итоге.


  1. enjoyneering
    06.04.2018 19:37
    +1

    зачем вы вызываете WiFi.mode(WIFI_OFF) перед WiFi.forceSleepBegin()? WiFi.forceSleepBegin() сама вызывает WiFi.mode(WIFI_OFF) в своем теле.

    вот что в исходниках об функции WiFi.forceSleepBegin()
    /**
    * Disable WiFi for x us when value is not 0
    * @param sleep_time_in_us
    * @return ok
    */
    bool ESP8266WiFiGenericClass::forceSleepBegin(uint32 sleepUs) {
    _forceSleepLastMode = getMode();
    if(!mode(WIFI_OFF)) {
    return false;
    }

    if(sleepUs == 0) {
    sleepUs = 0xFFFFFFF;
    }

    wifi_fpm_set_sleep_type(MODEM_SLEEP_T);
    wifi_fpm_open();
    return (wifi_fpm_do_sleep(sleepUs) == 0);
    }


    1. a3x Автор
      06.04.2018 19:41

      Видимо повторение — мать учения. Не знаю зачем.
      У меня по идее ESP должна просыпаться с спящим модемом, я ведь перевожу ее в Deep sleep так ESP.deepSleep(sleep_time, WAKE_RF_DISABLED);
      Надо проверить, как оно на практике.


  1. LorDCA
    06.04.2018 19:51
    +1

    А можно было просто взять например TPL5111, резистором подобрать интервал через который подавать питание и удивиться что оказывается от батарейки может и лет 20 прожить.
    Тут вот есть даже готовое с переменным резистором.


    1. a3x Автор
      06.04.2018 19:56

      А хорошая идея, обязательно впилим в какой нибудь будущий проект. Спасибо!
      Но с текущим девайсом все чуть попроще, не в космосе работает, а на балконе.


      1. Mike-M
        08.04.2018 17:53
        +1

        Есть ещё одна хорошая идея для будущих проектов: вместо китайских ESP использовать CC3220 от Texas Instruments. Да, это дороже. Зато сэкономите время, которое, как известно, является невосполнимым ресурсом (в отличие от денег). В Вашем проекте я насчитал как минимум 3 места, где примененный модуль сталкивается с ограничениями.

        В некоторых мануалах по оптимизации энергопотребления ESP8266 можно встретить команду WiFi.disconnect(); которая должна отключать модем от текущей WiFi сети. Однако на практике, эта команда удаляет сохраненный в памяти модема SSID() и пароль, поэтому использоваться ее мы не будем.
        В CC3220 подобных багов нет.

        Для коммутации разных сигналов на вход единственного АЦП — используется мультиплексор (модель).
        В CC3220 АЦП имеет 4 входа.

        У ESP8266 АЦП 10-битный, а диапазон измеряемых напряжений 0..1 В.
        В CC3220 АЦП 12-битный, диапазон 0...1,5 В.

        А ещё мне кажется, что с Вашим опытом работы пора уже переходить с Arduino на взрослые IDE.


        1. a3x Автор
          08.04.2018 17:54

          Спасибо, интересно, надо посмотреть.


    1. FGV
      06.04.2018 20:00

      и как его к esp8266 прикрутить? да и зачем? если встроенный аналогичный и программируемый по цифре в esp уже встроен?


      1. a3x Автор
        06.04.2018 20:06

        Если вдруг не будет хватать ног, то можно к RST ноге подключить TPL5111, а GPIO16 использовать. Но в схему конечно лучше глянуть для начала.


        1. FGV
          06.04.2018 20:15
          +1

          судя по даташитам gpio16 это выход таймера который будит esp8266 (и то если соединен с rst), как gpio он не адресуется


          1. a3x Автор
            06.04.2018 20:27

            Я если мне не изменяет память использовал его как обычное gpio в другом проекте.


            1. FGV
              06.04.2018 21:04

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


            1. FGV
              06.04.2018 22:02
              +1

              Вспомнил!
              Там заковырка в другом, для GPIO0-15 есть возможность рулить ими записью в регистры типа GPIO_*_W1TS/GPIO_*_W1TC (*-OUT, ENABLE, STATUS), где мл. 16 бит соответствуют GPIO0-15.
              А вот что бы рулить GPIO16 – надо к нему лезть только через отдельный набор регистров для этого пина.


              1. a3x Автор
                06.04.2018 22:31

                Видимо все зависит от того, где разрабатывать. В Arduino IDE чтобы управлять GPIO16 достаточно команд digitalWrite(GPIO16, LOW) \ digitalWrite(GPIO16, HIGH)
                У нас в датчике CO2 на этом GPIO светодиод висит и ничего, светит.


      1. LorDCA
        06.04.2018 20:19
        +1

        Элементарное. Ставим после батарейки. И рубим батарею от всего и сразу на заданое через сопротивление время. Как только истекает время он подает питание всему. А как все железо отработает сессию то подает сигнал ему на пин о окончании сессии и он опять отрубает всему питание.


        1. a3x Автор
          06.04.2018 20:32

          Теряется гибкость Настройки. Но для серийных применений — наверное будет оптимально.


          1. LorDCA
            06.04.2018 20:49
            +1

            Для настроек он может будить всю систему по кнопке. Нажал кнопку и настраивай. Как закончил настройки подал сигнал об окончании и он все отрубит и уйдет опять на цикл заданный сопротивлением.
            ИМХО конечно. Но я отказался от развития подобного на базе wifi. Слишком он прожорливый. Так же как и блутус. Пока проснется, пока зарегистрируется в сети. пока соберет и отправит… Тоска зеленая в общем… Блутус еще и теряется постоянно. И это я еще не напомнил о процессе настройки wifi у устройств лишенных дисплея, что вообще для простых людей напоминает магию.
            Радио трансиверы до 1 ГГц с шифрованием и прочим блекджеком, гораздо гораздее для подобных целей.
            Например такой вот брелок (35х60х5мм) 3 кнопки, дисплей Е-Инк и с радио трансивером примерно метров на 500. От CR2032 будет жить 10+ лет.

            Заголовок спойлера



            1. AlekseyKidis
              08.04.2018 17:52
              +1

              О, а можно подробнее? Что собирает данные, кто раздает, и т.д. А то я пытаюсь для дома собрать систему независимых датчиков, но с WiFi уже намучился


              1. LorDCA
                08.04.2018 20:00
                +1

                Подробнее будет когда все более менее причешется. Тут в двух словах не рассказать всю идеологию проекта. Это не «умный дом», у меня другая цель навеянная подслушанным обсуждением девочек «на кой все это нужно, почему не могут сделать что бы вот так ....»
                Собирается все вот на такие штуки. Крутится на Debian. Каждый сам может их использовать как захочет, как и любые юниты из проекта. SDK и примеры кода будут в открытом доступе.

                Заголовок спойлера




                1. dernuss
                  09.04.2018 05:34

                  Во, помоему это самый правильный путь, 868 Мгц. Нормальные транссиверы с большой мощностью, интересно какие?
                  Если я буду делать когда нибудь, то будет нечно похожее.


                  1. LorDCA
                    09.04.2018 07:55
                    +2

                    CC1310. Он хорош что может при необходимости в mesh сеть и таким макаром покрывать любые площадя.
                    У меня вся элементная база от Ti, за исключением чипов памяти и обвязки, Ti их просто не производит. У них интересная система с бесплатными образцами, что для гаражного проекта облегчает финансовое бремя на прототипирование.
                    А при варианте что это куда то вырастет, у них есть программа по поддержки подобных гаражных эксперементаторов. :)
                    В общем ждем платы со стенсилом. Надеюсь жена не побьет за запекание плат в духовке :)


                    1. dernuss
                      09.04.2018 08:58

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

                      mesh выглядит тоже прикольно, но тогда ни каких 10 лет работы.

                      Мне теперь больше нравятся si4432/si4463 + отдельный микроконтроллер.


                      1. Mogwaika
                        09.04.2018 10:13
                        +1

                        Так там наверное конечные ноды не должны перепередавать сообщения, а промежуточные можно делать с питаием («умные» розетки/выключатели), как делает одна китайская фирма.


                    1. a13aa
                      09.04.2018 10:42
                      +1

                      Печатные антенны рассчитывали или перерисовали готовые? Корпуса для устройств какие будете использовать? Дальность работы пульта 500м — это предположительно или испытывали? Меры по уменьшению пикового тока батареи приняли?


    1. the_bat
      06.04.2018 20:49
      +1

      Не получится. Не все так просто.
      1. Интервал конкретно этого таймера 7200с — тут уже проигрываем, так как ночью можно вообще 5-6 часов поспать, а с учетом светового дня во многих регионах России, можно и по 8-10 часов спать.
      2. Толк будет (если не брать в расчет первый тезис) только если подавать питание на все устройство через транзистор, который управляется ногой от TPL5111. Если ставить ее просто на ногу ESP, то мы просто получаем дополнительное потребление, пусть и маленькое, но сразу теряем возможность задавать свое расписание (например, днем раз в 2 часа, утро/вечер раз в час, ночью спим, например).

      Для этого вообще есть другие микросхемы — RTC с календарем и интераптом.


      1. LorDCA
        06.04.2018 20:51
        +2

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


        1. a3x Автор
          06.04.2018 21:14

          ну это же Джаст фо фан. И температура днём может резко меняться или точне ночью могут быть заморозки. А днём могут птицы все окно загадить и станет темно.


          1. LorDCA
            06.04.2018 21:17

            Ну тогда меняем батареи на аккумуляторы. И сверху прикручиваем солнечную панель. Добавляем контролер. Заодно по уровню заряда с нее будете брать количество света полученного за весь день. Добавить базу растений с их требованиями и можно еще рекомендации выдавать по размещению :)


            1. a3x Автор
              06.04.2018 21:25
              +1

              Так и до блокчейна не далеко.


              1. LorDCA
                06.04.2018 21:48

                Именно, что бы всегда знать кто именно поливал цветочек последний раз. Для этого нам понадобится встроить RFID в горшок и в каждую лейку. Что бы лейки были именными.
                А как же без внедрения искусственного интеллекта? Нейросети считывают движения листиков и переводят на человеческий язык. Нейросети обязательно что deep learning, что бы быть в тренде. :)
                Можно подумать над электрической стимуляцией обязанного поливать человека. Шокер ему в кресло. :)
                В общем ничем не ограниченное поле для фантазий «Джаст фо фан».
                Зовите если еще идеи понадобятся.


                1. a3x Автор
                  06.04.2018 22:35

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


                  1. LorDCA
                    06.04.2018 22:48

                    Мне кажется что вам уже известна эта статистика, если поливали раньше.
                    Но в целом, если хотите по существу.
                    Весь сенсор можно уменьшить в размер батареек, еще и место останется.
                    При вашем подходе при работе с электродами, они очень быстро корродируют/ «испарятся», что еще не очень хорошо для самого растения, всякие там металлы в почве. Best practice, электроды «меняют местами» программно. Но в вашем случае такое сложно. Либо есть специальные сенсоры для измерения влажности почвы, на шнурочке.
                    В общем есть еще над чем работать.


  1. EMS
    07.04.2018 01:11

    КДДПВ? :)


    1. a3x Автор
      07.04.2018 07:59

      Да, обычный дуб.


  1. softm
    07.04.2018 03:10

    Один недостаток — будут подтравливаться электроды. Надо делать одно измерение в 120-ть минут. Скажем. Далее отключать их — вообще.


    1. nochkin
      07.04.2018 07:18

      Разве будут подтравливаться даже если лаком покрыты?


    1. a3x Автор
      07.04.2018 08:00

      Ну пока под лаком все выглядит прилично.


  1. I-denis
    07.04.2018 08:48

    можно посмотреть фото состояния погруженной в землю части платы через год эксплуатации?


    1. a3x Автор
      07.04.2018 11:36

      Месяцев через 10 можно будет.


      1. I-denis
        07.04.2018 14:10
        +2

        хм, название статьи — год измеряем влажность почвы…


        1. a3x Автор
          07.04.2018 14:58

          Имелось ввиду, что батареек хватит на год. Чесслово не собирался вводить в заблуждение.


  1. kn0ckn0ck
    07.04.2018 17:26

    Я думаю что WiFi для этих целей далеко не лучший вариант. Существенно проще (в плане логики, кода и компонентов) я собирал по этому мануалу


    1. dernuss
      07.04.2018 19:32
      +1

      Я правильно понимаю, что если меня с телефоном нет в квартире, то сообщение о гибнущем цветке я не получу?


      1. a3x Автор
        07.04.2018 19:52

        Девайс шлёт Сообщения на сервер, также может отправить Пуш уведомление на телефон. Главное чтобы дома WiFi работал.


        1. dernuss
          07.04.2018 19:54

          Что то не пойму, он шлёт сообщения на сервер через блютуз?
          Если честно я не понимаю


          1. a3x Автор
            07.04.2018 21:09

            Это я видимо не на то ответил. По блютусу да, вариантов нет. WiFi в этом плане удобнее.


      1. kn0ckn0ck
        08.04.2018 10:14
        +2

        Bluetooth + телефон — это лишь один из вариантов. Еще может быть Bluetooth + дом. сервер (RPi, OrangePi и т.п.), вместо какого-то внешнего сервера. Сценарий о гибнущем цветке — вообще не реалистичный. Он вполне пару дней может постоять без полива. Если уж и заботиться на случай долгого отсутствия, то делать нужно автополив.


        1. dernuss
          08.04.2018 11:21

          Звучит здорово, а какая дальнобойность у BLE маяка?
          Есть допустим несколько цветков в нескольких комнатах. В довольно не маленькой квартире… А цветы как правило стоят на подоконнике или вообще на лоджиях. Да и лоджий несколько на разных сторонах квартиры (дома).
          WiFi кое как добивает, как будет это дело с BLE?


    1. a3x Автор
      07.04.2018 19:53

      Ну у всех свои правила игры в блекджек. )


    1. LorDCA
      07.04.2018 20:33
      +2

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


      1. a3x Автор
        07.04.2018 21:09

        Так и на айфоне наверняка бубны нужны, чтобы работало.


        1. mrhru
          08.04.2018 09:57
          +1

          Нафига полноценный блютус? С установлениями соединений для передачи данных и прочим? Используем режим маячков, т.е. просто передаём результаты измерений "в воздух", которые может ловить любой BLE-приемник. На Хабре была статья, как из nRF24 сделать передатчик и приемник. Длина полезных данных — байт 16, хватит для передачи измерений.
          Энергопотребление на один пакет примерно 50 мА*мСек, т.е. при передаче раз в секунду среднее потребление порядка 50мкА, а раз в 10 сек — уже 5 мкА.
          А самый главный вопрос — зачем питание датчиков делать батарейным? :) Светодиодное освещение полок с растениями — тоже батарейное? Или горшки с растениями постоянно по квартире перемещаются?


          1. kn0ckn0ck
            08.04.2018 10:26
            +1

            Питание делать батарейным нужно делать хотя бы с эстетической точки зрения, чтобы из горошков провода не висели. Проблемы не видно, когда мы имеем дело с одним лабораторным горшком. Если говорить о жилом помещении, то:
            а) горшки стоят везде где можно (шкафы, полки, подоконники и т.п.)
            б) их много
            Проводное решение вопроса ну будет оценено по достоинству домашними. Более того, каждый горшок придется оснастить блоком питания.

            У меня есть более интересное предложение — солнечные батареи.
            Небольшая по площади батарея вполне может давать 3 мА в пасмурную погоду. Нормальному устройству достаточно 100 мкА.
            Батарейный блок все равно потребуется для пускового тока (он порядка 16 мА) — это как в машине аккумулятор. Однако, это очень редкое событие, остальное время батарейки расходоваться не будут.


      1. kn0ckn0ck
        08.04.2018 10:19
        +1

        Здесь у Вас в каждом предложении заблуждение. Bluetooth работает очень стабильно в т.н. режиме iBeacon (радиомаячок). В этом режиме с коллосально низким энергопотреблением (10-20 мкА) отправляется нужная информация (влажность, температура, батарейка и все что душе угодно). Подключаться не нужно совсем. Расход батарейки определяется в первую очередь алгоритмом, во вторую умением снизить энергопотребление микроконтроллера. Практические изыскания показывают, что при частом измерении параметров (для построения динамичных графиков), батареек хватает на месяцы.


  1. DjOnline
    08.04.2018 08:47

    Есть ещё куда стремиться. Вот чем хорош Xiaomi Smart Flower Monitor — так это тем, что он умеет ещё измерять количество минеральных веществ, и имеет обширную базу данных для 3000+ растений на смартфоне, с учётом необходимой целевой влажности и количества миниральных веществ.


    1. a3x Автор
      08.04.2018 18:20

      Вот же хитрецы, все вперед нас сделали.


      1. the_bat
        08.04.2018 21:13
        +1

        Слизали с нас, точно говорю…


        1. LorDCA
          08.04.2018 21:23
          +1

          146% украли вашу идею.
          Один уже успел даже на кикстартере денег собрать под нее.
          гыгы


          1. a3x Автор
            08.04.2018 21:34

            Ого, больше ста баксов.


            1. LorDCA
              08.04.2018 22:01

              Изготовление матрицы для выдавливания корпуса из пластика начинается от 25К баксов. Да и на принтере не очень дешево по итогу выйдет. Я для своих прототипов печатал SLS и на обычном. И то и то кусается.
              Так что минимальная партия должна окупить все побочные затраты на изготовление всякой оснастки.

              Заголовок спойлера




              1. areht
                08.04.2018 22:13

                > Изготовление матрицы для выдавливания корпуса из пластика начинается от 25К баксов. Да и на принтере не очень дешево по итогу выйдет.

                Первая ссылка в гугле говорит о цифре ниже $3000.


                1. a3x Автор
                  08.04.2018 22:19

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


                1. LorDCA
                  08.04.2018 22:29

                  Там говорится ОТ… вы копните поглубже… удивитесь страшно.


              1. a3x Автор
                08.04.2018 22:18

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


                1. a3x Автор
                  08.04.2018 22:36

                  но сто баксов, это сто баксов.


                  1. LorDCA
                    08.04.2018 22:42

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


  1. CombaSoft
    08.04.2018 17:36
    +1

    как показала практика и при 75 кГц результаты измерений влажности достаточно точные и отражают состояние почвы.

    Посмотрите еще 80 Мгц решение — его сделали на базе промышленного, возможно, вам будет интересно сделать такой вариант.
    Не подскажете, что подразумевается под 100% влажностью почвы? Я не могу понять. С нулём понятно — землю высушили, пропекли в духовке — и вот он ноль (пока почва не успела набрать чуть влажности из воздуха). А вот со 100% что? Это 100% от влагоемкости(льем больше — вода почвой уже не впитывается, появляется на поверхности), соотношение 1 к 1 объемов воды почвы или же соотношение масс?


    1. a3x Автор
      08.04.2018 17:40

      У меня 100% влажность — это когда до входа АЦП ничего не дошло. А 0% — это когда дошло ровно все, что было отправлено. В какую то более сложную физику (влагоемкость) я не вдавался.
      В целом интуитивно, когда шкала показывает 100%, земля объективно мокрая.


  1. tihomirovaaleksej
    08.04.2018 17:41
    +1

    Вещь интересная, скажите, эта разработка имеет отношение к смартпотам?


    1. a3x Автор
      08.04.2018 17:43

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


      1. a3x Автор
        08.04.2018 17:51

        Возможно, что наша разработка куда то и вырастет в будущем.


  1. Baton34
    08.04.2018 17:43
    +1

    Имею внешний датчик на esp8266 который по wifi отдаёт данные и уходит в ESP.deepSleep на 5 минут. В логах роутера (ubuntu) его работа выглядит так:

    log
    hostapd: wlan0: STA esp-mac-address IEEE 802.11: authenticated
    hostapd: wlan0: STA esp-mac-address IEEE 802.11: associated (aid 2)
    hostapd: wlan0: STA esp-mac-address RADIUS: starting accounting session 5AC7A992-00000088
    hostapd: wlan0: STA esp-mac-address WPA: pairwise key handshake completed (RSN)
    dhcpd[2069]: DHCPDISCOVER from esp-mac-address via wlan0
    dhcpd[2069]: DHCPOFFER on 172.30.2.7 to esp-mac-address via wlan0
    dhcpd[2069]: DHCPDISCOVER from esp-mac-address via wlan0
    dhcpd[2069]: DHCPOFFER on 172.30.2.7 to esp-mac-address via wlan0
    dhcpd[2069]: DHCPREQUEST for 172.30.2.7 (172.30.2.1) from esp-mac-address via wlan0
    dhcpd[2069]: DHCPACK on 172.30.2.7 to esp-mac-address via wlan0
    dhcpd[2069]: DHCPREQUEST for 172.30.2.7 (172.30.2.1) from esp-mac-address via wlan0
    dhcpd[2069]: DHCPACK on 172.30.2.7 to esp-mac-address via wlan0
    hostapd: wlan0: STA esp-mac-address IEEE 802.11: disassociated
    hostapd: message repeated 9 times: [ wlan0: STA esp-mac-address IEEE 802.11: disassociated]
    hostapd: wlan0: STA esp-mac-address IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)


    1. a3x Автор
      08.04.2018 17:50

      Никогда не думал, как Deep Sleep «выглядит» со стороны роутера, но подозреваю, что возможно, для правильного отключения надо сначала выполнить такие команды:

      WiFi.mode(WIFI_OFF);
      WiFi.forceSleepBegin();


      1. Baton34
        09.04.2018 11:03
        +1

        Попробовал. Ничего не изменилось в логах.


        1. a3x Автор
          09.04.2018 11:16

          Видимо ESP не умеет более цивильным способом отключаться.


  1. Sagittarius67
    08.04.2018 17:44
    +1

    У ESP есть интересный режим работы — ESP-now.
    Без Wi-Fi и IP. Время соединения значительно сокращается.
    Здесь кратенько рассказано — youtu.be/6NsBN42B80Q


    1. a3x Автор
      08.04.2018 17:44

      Спасибо, очень интересно посмотрю.


    1. a3x Автор
      08.04.2018 18:08

      С ESP32 пока дел не имел, но там вроде есть такая же поддержка Ardiono IDE как в 8266.


  1. dmsav
    09.04.2018 13:15

    А как вам вариант поставить аккумуляторную батарейку и солнечную панель?
    И еще вопрос, сколько у вас всего таких устройств установлено?