1 2 3 4 5 6 7 8 9 10 6.5/10 6,40оценок: 5

Контроллер для теплицы на Arduino - 2

Тема в разделе "Теплицы и парники", создана пользователем Cofessor, 27.04.18.

  1. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628
    Адрес:
    Брянск
    Пардон, я впервые озаботился логикой работы автоматики, поэтому даже не заметил, что пытаюсь и температурой, и влажностью управлять с помощью одного реле. Это, так сказать, первый набросок.
    Исправил вот здесь:
    Код:
    #include <Wire.h>
    #include "Adafruit_Si7021.h"
    #include <WiFi.h>
    
    Adafruit_Si7021 sensor = Adafruit_Si7021();
    
    #define HEATER_PIN 5      // Реле нагревателя
    #define COOLER_PIN 4    // Реле охладителя
    #define HUMIDIFIER_PIN 14 // Реле увлажнителя
    #define DEHUMIDIFIER_PIN 12 // Реле осушителя
    
    const char* ssid = "SSID";
    const char* password = "пароль";
    
    // Пороги температуры (°C)
    const float T_MIN = 18.0;
    const float T_MAX = 28.0;
    
    // Пороги влажности (%)
    const float H_MIN_FIXED = 40.0;  // Фиксированный минимум вне диапазона температур
    const float H_MAX_FIXED = 70.0;  // Фиксированный максимум вне диапазона температур
    const float HYSTERESIS = 3.0;     // Гистерезис для формулы
    
    void setup() {
      Serial.begin(115200);
      WiFi.begin(ssid, password);
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println("");
      Serial.println("WiFi connected");
      Serial.println(WiFi.localIP());
    
      // Настройка пинов реле
      pinMode(HEATER_PIN, OUTPUT);
      pinMode(COOLER_PIN, OUTPUT);
      pinMode(HUMIDIFIER_PIN, OUTPUT);
      pinMode(DEHUMIDIFIER_PIN, OUTPUT);
    
      digitalWrite(HEATER_PIN, LOW);
      digitalWrite(COOLER_PIN, LOW);
      digitalWrite(HUMIDIFIER_PIN, LOW);
      digitalWrite(DEHUMIDIFIER_PIN, LOW);
    
      if (!sensor.begin()) {
        Serial.println("Не удалось найти датчик Si7021!");
        while (1); // Зависание при ошибке
      }
      Serial.println("Si7021 найден!");
    }
    
    void loop() {
      float t = sensor.readTemperature(); // Температура в °C
      float h = sensor.readHumidity();   // Влажность в %
    
      Serial.print("Температура: "); Serial.print(t);
      Serial.print(" °C, Влажность: "); Serial.print(h); Serial.println(" %");
    
      // Регулирование температуры (всегда)
      if (t < T_MIN) {
        digitalWrite(HEATER_PIN, HIGH);
        digitalWrite(COOLER_PIN, LOW);
        Serial.println("Температура ниже " + String(T_MIN) + "°C — включён нагреватель");
      } else if (t > T_MAX) {
        digitalWrite(HEATER_PIN, LOW);
        digitalWrite(COOLER_PIN, HIGH);
        Serial.println("Температура выше " + String(T_MAX) + "°C — включён охладитель");
      } else {
        digitalWrite(HEATER_PIN, LOW);
        digitalWrite(COOLER_PIN, LOW);
        Serial.println("Температура в норме — без действий");
      }
    
      // Регулирование влажности (зависит от температуры)
      if (t >= T_MIN && t <= T_MAX) {
        // Внутри диапазона температур: регулируем влажность по формуле
        float H_target = 1.5 * t + 38;
    
        if (h < H_target - HYSTERESIS) {
          digitalWrite(HUMIDIFIER_PIN, HIGH);
          digitalWrite(DEHUMIDIFIER_PIN, LOW);
          Serial.println("Влажность ниже целевой — включён увлажнитель");
        } else if (h > H_target + HYSTERESIS) {
          digitalWrite(HUMIDIFIER_PIN, LOW);
          digitalWrite(DEHUMIDIFIER_PIN, HIGH);
          Serial.println("Влажность выше целевой — включён осушитель");
        } else {
          digitalWrite(HUMIDIFIER_PIN, LOW);
          digitalWrite(DEHUMIDIFIER_PIN, LOW);
          Serial.println("Влажность в зоне гистерезиса — без действий");
        }
      } else {
        // Вне диапазона температур: регулируем по фиксированным порогам
        if (h < H_MIN_FIXED) {
          digitalWrite(HUMIDIFIER_PIN, HIGH);
          digitalWrite(DEHUMIDIFIER_PIN, LOW);
          Serial.println("Влажность ниже " + String(H_MIN_FIXED) + "% — включён увлажнитель");
        } else if (h > H_MAX_FIXED) {
          digitalWrite(HUMIDIFIER_PIN, LOW);
          digitalWrite(DEHUMIDIFIER_PIN, HIGH);
          Serial.println("Влажность выше " + String(H_MAX_FIXED) + "% — включён осушитель");
        } else {
          digitalWrite(HUMIDIFIER_PIN, LOW);
          digitalWrite(DEHUMIDIFIER_PIN, LOW);
          Serial.println("Влажность в норме (фиксированные пороги) — без действий");
        }
      }
    
      delay(60000); // Опрос каждые 60 секунд
    }
    
    Заодно изменил алгоритм работы, по ходу дискуссии понял, что с логикой не так. Попытаюсь объяснить на примере диаграммы:
    [​IMG]
    На рисунке показаны пороги изменения температуры (горизонтальные линии) и влажности (вертикальные линии). Зону 1 нужно выкинуть, поскольку она чрезмерно сухая для растений, а зону 2 - потому, что она слишком влажная. Зелёная зона - это то, что в программе называлось insideZone.
    "Гениальная догадка" :|: заключается в том, что условием регулирования влажности по формуле в зависимости от значения температуры, должно быть не нахождение параметров внутри зелёной зоны, а нахождение температуры между 18-28*С. Если температура выше или ниже, то влажность регулируется по порогам - так же, как и температура (как все делают).
    Таким образом, если температура вошла в норму, а влажность далека от заданной (например, как точка с координатами 35,20), то она будет двигаться по горизонтали, пока не достигнет медианной линии с гистерезисом 3%.

    За остальной скетч спасибо, просмотрел, оценил, использую обязательно. Особенно понравился контроль уровня сигнала Wi-Fi.
     
  2. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628
    Адрес:
    Брянск
    В общем, запустить скетч мне не удалось - ругается на Adafruit_Si7021.h - какая-то ошибка в Temp. Возможно, снести Temp поомогло бы, но экспериментировать не стал.
    Но, судя по тексту скетча, данные (t,h, уровень Wi-Fi, Режим и Реле выводятся в виде списка и обновляются каждые 2 сек. Мне это не надо потому, что актуальные данные на текущее время не интересуют - что толку знать состояние в один единственный момент времени?
    Есть диаграмма, и на ней данные за всё время. Фильтром могу выделить за любой промежуток времени, например ночью, в 17:20, например, с восхода по настоящее время.
    Ручной режим - это выше моего понимания, реально отрегулировать вручную климат невозможно, как невозможно управлять вручную аэродинамически неустойчивым самолётом.

    Что касается рисунка, согласен, очень удобно задать произвольную фигуру с помощью описания. Намного удобнее, чем рисовать в редакторе, затем масштабировать и перемещать по полотну, особенно, если возможны изменения. Сохраню данный фрагмент, пожалуй, пригодится, спасибо. Тем более, что данная фигура отражает оптимальный климат только для светлого времени суток - она оптимизирована под фотосинтез. Ночью, когда фотосинтеза нет, оптимальной областью будет прямоугольник, с температурой где-то в диапазоне 16-20*С, и влажностью 70-85%.
    Также возможны изменения в разные периоды сезона выращивания. Например поздней осенью, когда поливы прекращаются, а значит поливы сходят на нет и транспирация затухает, фотосинтез уже слабый и те же томаты просто дозревают или сохраняются, чтобы подольше к столу были свежие плоды. Конечно, в этих условиях зона оптимального климата уже не столько фотосинтезом будет определяться, сколько экономикой. Так что на этот период фигура тоже будет другой формы и в другом месте и какой она будет - может стать ясным только в ходе экспериментов.
     
    Последнее редактирование: 25.04.26
  3. ask33
    Регистрация:
    06.11.13
    Сообщения:
    1.595
    Благодарности:
    3.410

    ask33

    Живу здесь

    ask33

    Живу здесь

    Регистрация:
    06.11.13
    Сообщения:
    1.595
    Благодарности:
    3.410
    Адрес:
    Ногинск
    Это я дописал без проверки, просто накидал в код рабочей программы.
    Видимо где-то не доглядел.
    А компилировать было негде, поэтому и проверить не смог.
    Ну вот та программа что выводит уровень сигнала она у меня точно рабочая и обновление по ota точно работает.

    Это данные в браузере обновляются каждые 2 секунды, собственно для ESP не напряжно и очень удобно смотреть какой уровень сигнала у устройства когда ищешь куда бы его лучше прикрутить.
    Можно там поменять и на 60 секунд.
    А в самой программе данные с датчика температуры влажности считываются раз в 60 секунд.
    Ну в общем большое поле для доработки.

    У меня хранение данных сделано немножко по-другому. Если уйти от квадратов, кругов, овалов и прочей геометрии и сохранять только температуру и влажность, именно так у меня и сделано.

    Алгоритм довольно-таки простой, задается время опроса датчика и порог изменения показаний. Если за указанное время, показания датчика отклонились, на значение более чем указано в пороге, то данные записываются в базу. Просто мне не надо чтобы каждую минуту или 10 минут или полчаса в базу писались одни и те же данные.

    А далее из базы данных можно выводить информацию в каком угодно виде за какой угодно период.
    Я пользуюсь графическим интерфейсом либо nodered, либо графана для разных задач.
    Графана очень продвинутые графики может выдавать, может быть в ней и геометрические фигуры можно настроить, никогда не пробовал за ненадобностью.

    Мне температура и влажность нужны в основном для того чтобы понимать правильно ли работает форточка и вентилятор в теплице.
    За последние 5 лет результаты работы меня устраивают.
    В этом году как и говорил тепличку снегом раздавило. Переделал, сегодня поликарбонат накинул. Осталось только форточки поставить, потом автоматику на место и приступить к новым испытаниям.
     
  4. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628
    Адрес:
    Брянск
    Да не парься, я примерно представляю, как это должно выглядеть, а разукрашивания принципиального значения не имеют.
    OTA меня вообще не волнует - у меня в коде OTA занимают всего 3 строчки. Как вставил когда-то, такой минималистский вариант и использую. Всяческие проверки вставлять я не стремлюсь потому, что ничего не мешает вставить их, если вдруг что-то не работает, а после устранения снова убрать, чтобы код был короче и яснее.
    Я тоже ставил 10 сек на период отладки, чтобы не терять времени на ожидания, но получилось так, что при наведении на точки, если t и h мало меняются, точки наслаиваются друг на друга, отображаются температура, влажность и время сразу нескольких точек. Вообще-то это наведение - операция малополезная, если не сказать, бесполезная, так что можно забить. Главное, почему быстрые считывания нужны - быстрая смена климата. Подозреваю, что это основная причина того, почему растения вдруг надолго останавливаются в росте. Скорость изменения температуры не должна быть больше 6*С в час, иначе стресс, влажность - не помню, пока не до них.
    А такие ситуации, когда параметры скачут, в теплице бывают часто: переменная облачность - солнце то выходит из-за туч, то снова заходит. Вентиляция (вентилятор, двери, форточки, особенно их комбинация на разной высоте, ветер). В принципе, это может вообще загубить растения, если на дворе холодно, так что нужно следить, возможно даже купить дорогой безинерционный датчик.

    Что касается экономии сеансов связи по Wi-Fi при незначительном изменении параметров, мне не жалко - пусть ставит точки друг на друга, пока не собрался делать контроллер датчиков на батарейках.

    А практики у меня до сих пор не было. Как когда-то попробовал рулить контроллером и увидел, что простецкие алгоритмы погоды не делают, сильно охладел, иногда зимой дорабатывал по чуть-чуть, а потом вообще забросил года на четыре. На этот раз уже рекорд поставил - апрель заканчивается, а я продолжаю. Ну, сейчас совсем другие контроллеры, библиотеки, ИИ, разрабатывать схемы и печатные платы стало ненужным, да и дел на участке, кроме ухода за растениями, практически не осталось.
     
  5. Saasha
    Регистрация:
    03.04.13
    Сообщения:
    581
    Благодарности:
    879

    Saasha

    Живу здесь

    Saasha

    Живу здесь

    Регистрация:
    03.04.13
    Сообщения:
    581
    Благодарности:
    879
    Адрес:
    Тульская обл.
    Тут категорически не согласен.
    Когда руками порулишь грелками, вентиляторами и тп глядя на данные с датчиков - тогда понимание приходит процессом управления.
    Теоретически одно, а на деле другое. Всего не предусмотришь пока не начнешь использовать в деле.
     
  6. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628
    Адрес:
    Брянск
    Я как раз о деле и говорю, которое не попробуешь без автоматики. Допустим, у вас самое холодное время на рассвете, вы что собираетесь в это время сидеть и крутить руками?
    Другой пример: если у вас нужно регулировать всего один параметр (температуру или влажность), то о чём непонятном тут говорить? Мала температура - поднимай, велика - снижай, и это ясно ещё до того, как начнёте крутить. А вот если у вас температура ниже нормы и влажность ниже нормы и вы начинаете увеличивать температуру, ещё не трогая влажность, то с удивлением обнаружите, что влажность почему-то начинает падать, хоть вы её не трогали. Крути - не крути, понять закономерность опытным путём вам не удастся никак, только разбираясь в физических процессах. Ну, или скопировать скетч, разработанный аналитиком, который руками ничего не крутил.
    Но в общем, я как раз делаю автоматику для массированных экспериментов, отлаживать на практике буду примерно года два, постоянно меняя алгоритмы, скетч, исполнительные механизмы. В общем-то любую промышленную теплицу 1-2 года и отлаживают, пока выходят на плановую урожайность, но там целый штат профессионалов и систему они получают готовую, только настраивай.
     
  7. Saasha
    Регистрация:
    03.04.13
    Сообщения:
    581
    Благодарности:
    879

    Saasha

    Живу здесь

    Saasha

    Живу здесь

    Регистрация:
    03.04.13
    Сообщения:
    581
    Благодарности:
    879
    Адрес:
    Тульская обл.
    Нафик нужны такие жертвы. Весна, особенно нонешняя - чудесное время для настройки всяких режимов. Днем изменений температуры тоже хватает.

    Почему то вспомнился вопрос Карлсона про коньяк)

    А как быть в пограничные периоды?
    На улице день, темп +10°С, светит яркое весенне солнце. В теплице +40°С.
    Многовато... Нужно открыть дверь/форточку.
    Насколько открыть зависит от направления и силы ветра, ибо можно за 10 секунд сделать в теплице те же 10°С, как на улице.

    Пока сам не научишься управлять механизмами в зависимости от датчиков, то нормальной проги для этого дела не написать.
     
  8. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628
    Адрес:
    Брянск
    Понятно. А нафига такие жертвы - у моря ждать погоды, когда, просмотрев диаграммы, я и без этого увижу результат всех изменений погоды за сутки, вообще не "управляя штурвалом?
    Ах да, вы видите реакцию на срабатывание реле! Так я тоже собираюсь отобразить на диаграмме все моменты срабатывания исполнительных механизмов. Единственно, почему это ещё не сделал, пока не определил наиболее информативную форму вывода: если списком, непонятно, какое включение какого ИМ-ма в какое время и как повлияло на точки. Однако включение в определённый момент более одного механизма - это очень редкое явление и его можно вообще исключить.
    Можно сделать например так: после срабатывания ИМ №1, точки меняют цвет на сиреневый, после включения ИМ №2 - на красный, ИМ №3 - на зелёный и т. д. Например, ИМ №3 форточка, навожу на точки зелёного цвета и вижу, когда это было, ИМ №1 - обогрев, вижу, что включался ночью, и т. д.
    А кроме того есть фильтры, пока только фильтр по времени - на диаграмме остаются только точки за указанный мной период. Понятно, что включения обогрева следует ожидать ночью, а если холодный день, то и днём, т. е. будет больше точек сиреневого цвета.
    Вот и скажите, что ценного вы узнаете, потеряв бездну времени собирая реакцию системы управления на ваше ручное управление исполнительным механизмом, чего я не получу без этого? А кроме того, я получу запись не в отдельные моменты времени, а за всё время.

    Я вам скажу, как я моделировал изменение параметров в домашних условиях. Не ручным включением ИМ, а "искусственным изменением климата" :). Например, клал возле датчика t/h мокрую ватку, имитируя повышение влажности, уносил контроллер на кухню, в лоджию, ставил стакан с горячейв водой. Т. о. я проверял логику работы именно в автоматическом режиме, для этого ничего нажимать не надо.
    На даче тоже можно так делать, можно, например, вместо включения, просто форточку открыть (или приоткрыть на нужный угол), т. е. всё проверять и настраивать именно в том режиме, в каком система и будет работать.
     
    Последнее редактирование: 26.04.26
  9. Saasha
    Регистрация:
    03.04.13
    Сообщения:
    581
    Благодарности:
    879

    Saasha

    Живу здесь

    Saasha

    Живу здесь

    Регистрация:
    03.04.13
    Сообщения:
    581
    Благодарности:
    879
    Адрес:
    Тульская обл.
    Управляя руками и видя реакцию можно сразу корректировать "степень управления".
    Глядя на график постфактум, меняя софт, и снова ожидая пока оно сработает чтобы посмотреть график - вот это действительно куча времени потраченного на ожидание результата ;)

    На лету настраивать! А не менять софт глядя на графики.
     
  10. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628
    Адрес:
    Брянск
    А что вы вообще, для конкретности, пытаетесь настроить? Как можно настаивать на своём варианте, не сказав ничего о том, что вообще вы хотите сделать? Если вам нужно всего лишь подобрать некие верхний и нижний пороги на всё многообразие условий за весь сезон, так это такой примитив, что и говорить не стоит.
    Если вы заметили, по пороговому принципу у меня регулируются только температура, поскольку поддерживать точное значение будет слишком дорого. Влажность тоже грубо регулируется по 2-м порогам, пока температура не вошла внутрь своего диапазона. А после этого влажность регулируется уже по другому правилу, в котором никакого верхнего и нижнего порога нет.
    Так же никаких один раз настроенных порогов для конкретного механизма у меня не будет: в феврале одни условия, в мае - другие, в сентябре - третьи, в ноябре - четвёртые, и мне непонятно, как можно установить одинаковые пороги для таких разных условий? Естественно, пороги (или правила регулирования) будут изменяться. Почему? Да потому хотя бы, что помидоры вкуснее, когда температура повыше - 25-28*С, но ранней весной они не плодоносят - нахрена энергию тратить? Или поздней осенью, когда требуется только доращивание, новые завязи обрываем, зачем создавать условия, оптимальные для плодообразования? И температуру снижаем и влажность, главное - чтобы плоды чернеть и гнить не начали. Ну и т. д. и т. п.

    А если регулирование вообще не позиционное, типа включил/выключил? По возможности, буду использовать. Первый пример: днём форточка регулирует температуру, ночью - влажность. при этом она не может открываться полностью - всё тепло уйдёт, должна только немножко приоткрываться
    Да и у вас, наверняка, такое тоже используется (ну, если не у вас, то, во всяком случае, это многие используют), например, ШИМ-регулирование нагрева в зависимости от отклонения температуры - как вы собираетесь изменять ШИМ с помощью нажатия кнопок?
     
  11. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628
    Адрес:
    Брянск
    Вообще, безошибочность самой системы управления становится ясной ещё на стадии макетирования, считая и включение испонительных механизмов (ИМ). Ведь на плате вместо ИМ достаточно одних реле - если реле включаются, значит и механизмы тоже будут включаться.
    А методов проверки исправности коннструкции много: кроме команд прямого включения реле можно ещё меню сделать, в котором пороги включения задавать произвольно. Или самому генерировать значения температуры, влажности или любых других параметров. Например, у вас в комнате температура постоянная +25*С и не меняется, как заставить реле, включающее охлаждение сработать? - Задать значение температуры выше верхнего порога.

    Короче, проверить работоспособность самой системы - что два пальца об асфальт, решается по ходу дела, всерьёз стоит говорить только об испытаниях системы на реальном объекте. А там по настоящему достойная цель - заставить систему выполнять то, что прописано в алгоритмах. Вся проблема именно в этом и заключается - система исправно переключает ИМ в соответствии с командами, а объект НЕ СЛУШАЕТСЯ.
    Если вы задаёте диапазон изменения температуры и без того очень широкий (20-30*С), но даже его система поддержать не в состоянии, кому такая система управления нужна? - Поддерживаем среднюю температуру по больнице? - Тогда сразу в палату №6.

    Теперь контроллеры с Wi-Fi позволяют собирать данные круглые сутки. Это у меня уже сделано, правда пока в пассивном режиме, когда исполнительные механизмы не работают, но это как раз именно то, что и нужно вначале - получить картину изменений климата без воздействия ИМ. Изменения на диаграмме в результате работы ИМ будет следующим шагом, что позволит сразу увидеть, как они влияют на климат. Затем делаем выводы, что нужно изменить, изменяем - снова смотрим и т. д.
     
  12. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628
    Адрес:
    Брянск
    В апреле очень много возился с рассадой, затем, как проклюнулась, тут же вывозил на дачу, а то моментально вытягивается. Контроллером почти не занимался. Нужно было распаять модуль Wemos D1 Mini, микросхему DS3231N, отсек под батарейку и два резистора на печатную макетную платку. Кажется мелочь, но, как только переворачиваешь плату на сторону пайки - сразу теряешь представление куда вести дорожку. А если ещё учесть, что микросхема DS3231N имеет шаг ножек 1,27 мм, а плата - 2,54, то понятно, что задачка не для слабонервных. Однако справился, хоть и возвращался к пайке несколько раз (по чуть-чуть, а то зрение такое - всё расплывается). Всё собрано в миниатюрную коробочку, осталось только датчик приклеить, который, понятно, будет снаружи:

    upload_2026-5-8_20-28-12.jpeg upload_2026-5-8_20-28-29.jpeg

    Вначале хотел использовать в качестве RTC готовый модуль, показанный здесь, но он почему-то не хотел сохранять время при отключении блока питания от сети. Собрав данную схему, обнаружил, что и в ней наблюдается то же самое. Впрочем, быстро разобрался, что нужно просто немного поправить инициализацию RTC в скетче, добавив строку if (rtc.lostPower()
    / Инициализация RTC, проверка, не было ли потери питания у RTC, установка времени компиляции
    rtc. begin();
    if (rtc.lostPower() {
    rtc. adjust (DateTime (F(_DATE_), F(_TIME_);
    }

    После этого время стало сохраняться.
    Итак, это устройство включает только контроллер, RTC и датчик Si7021 и предназначен просто для круглосуточного сбора данных - температуры и влажности, вывода их на диаграмму и раздачи времени на другие устройства. Так что, как видите, здесь сделать ручной режим просто бессмысленно, однако можно посмотреть, как ведёт себя объект в течение всего сезона - в жару, холод, дождливую погоду и пр.

    Включал одновременно 2 контроллера через Wi-Fi - всё нормально, оба рисуют диаграммы.
     
  13. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628
    Адрес:
    Брянск
    К сожалению, всё сильно затормозилось. Ещё в апреле хотел уже отнести компьютер и контроллер на дачу и приступить к сбору и анализу данных, однако постоянно возникали какие-то сбои, я с ними мужественно боролся, но возникали всё новые. В конце концов компьютер сам начал выдавать сообщения о проблемах.
    Ещё раз переставил винду, стал ставить Arduino IDE и, оппа - она не ставится. Опять много возился - и так, и эдак, крутил диагностические программы, в итоге пришёл к выводу, что с этим компьютером уже кашу не сваришь. Хорошо, что в запасе есть ещё один такой, тоже старый, даже плата и процессор случайно оказались такими же.
    Но судьбе этого было мало - и в моём мини ПК (тоже уже не новым, но более новым по сравнению с остальными) начал отчаянно скрипеть вентилятор. Разобрал - увидел, что вскрыть его невозможно, только менять целиком.
    Получалось, снова мой проект накрывается в этом году. Короче, заказал новый мини-ПК, самый дешёвый, естественно (менее 10 тыр) - деньги то откуда? План таков: получаю новый, настраиваю, старый отдаю в ремонт, чтобы заменили вентилятор. На дачу отправляю запасной старый комп, пока работающий, а после ремонта мини ПК, поставлю на даче вместо старого гроба этот мини.
    В общем, если всё сложится, у меня и дома и на даче будут стоять мини ПК.

    Теперь задумался о том, как я буду переносить данные, полученные в результате экспериментов на даче, на свой домашний компьютер, ведь компьютер на даче у меня к сети интернет не подключен, он будет работать только в локальной сети, чтобы не платить за интернет.
    Для упрощения переноса, настроил роутеры и программы в ESP одинаково. В скетче ESP указал MAC-адреса ESP и получение IP автоматически с помощью DHCP и добавил устройства в резервации IP, чтобы они выдавали фиксированные адреса. Теперь метеостанция, которую я поставлю в теплице, будет отображать диаграмму что на дачном компьютере, что на домашнем, с одинаковым адресом - 192.168.1.20, что проще, чем запоминать разные адреса. Также в скетче прописаны одинаковые SSID, пароль и канал WiFi, короче, все настройки на компьютерах, роутерах и в скетчах одинаковые.

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

    Надеюсь начать мониторить изменения параметров на даче по точечной диаграмме с начала июня.
     
  14. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628
    Адрес:
    Брянск
    Вдруг перестал один модуль Wemos D1 Mini на том компьютер, который собирался уже отвозить на дачу. Перестал определяться драйвер - перескочил с COM и LPT в окно "Другие устройства" с названием FT232, хотя FT232 я никогда не ставил - все AVR и ESP работают на м/сх CH340.
    Целый день бился над этой загадкой, но так и не решил. Что интересно, 2-й модуль как работал, так и продолжал работать. Правда модули от разных производителей. Решил посмотреть в "Свойства-х" ID оборудования - чьё устройство? Там написано: VID_403 - оно принадлежит FTDI, PID_6001 - соответствует модели FT232. Уф... - бросил.
    Сегодня на свежую голову решил скачать и установить драйвер FT232 - Хочешь этот драйвер? - На, получи. От результата я обалдел - Win подхватил драйвер и подключил к устройству, в COM и LPT драйвера устройств сразу появилась строка: USB Serial Port (COM4) и модуль стал грузиться.
    Вот чудо то! Но ведь на платке стоит м/сх CH340? - Что это всё значит?
    Проверяю, на всякий случай, VID и PID в Свойствах - соответствуют модели FT232... - Я в трансе.
    В конце концов, разобрался - некоторые фирмы что делают - сохраняя железо CH340, программно эмулируют работу CH340. Поэтому модуль заработал от драйвера FT232.
     
  15. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.584
    Благодарности:
    8.628
    Адрес:
    Брянск
    Получил новый мини-ПК и оказалось, что Arduino IDE не устанавливается и на новом ПК. Стало понятно, что причина не в устаревании ПК, а в том, что сервер Arduino. cc недоступен и не даёт загрузить в установленную систему список плат и библиотек, активировать плагины и графические элементы.
    В этом я вижу происки бандитского Запада, старающегося обрезать нам доступ ко всему, чему можно. К счастью, есть выход, я его опробовал и, если у кого такие же проблемы, можете взять на вооружение.

    Иными словами, как, всё-таки, запустить Arduino IDE версии 2.0.0 и выше, несмотря на блокировки? - Взять все настройки с уже работающего компьютера. А настройки содержатся в папке Arduino15. Именно туда подкачивается всё необходимое для работы системы. Устанавливаете систему с дистрибутива, копируете и заменяете содержимое Arduino15 на взятый с работающего компьютера и ... всё работает!

    Жаль только, что из-за вероломства Запада я потерял на этом много времени и как-то отключился от контроллеров на лето - сосредоточился на дачных работах. Зато на даче у меня в этом году всё прёт - нет худа без добра. Огурцы - с 25 мая, будет много яблок, смородины, голубики малины, клубники наелись, должно быть много дынь и арбузов.
    Единственно что неудобно - папка Arduino15 очень объёмная - несколько Гб, очень долго переносится, если компьютеры, как у меня, маломощные - мини-ПК.

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