Базовое программное обеспечение контроллера автоматизированного выращивания растений (КАВР).

Главное окно программы автоматизации гроубоксов, теплиц, курятников

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

Предыдущая статья     Список статей     Следующая статья

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

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

 

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

 

Совсем коротко об аппаратной части устройства.

Повторю самый минимум из предыдущей статьи.

Контроллер выполнен в виде одной платы, которая легко устанавливается в стандартную распределительную коробку.

Устройство автоматизации гроубоксов, теплиц, курятников

К клеммным колодкам подключается питание 220 В и исполнительные элементы. Очень удобная, технологичная  конструкция.

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

Подключение электрических компонентов к устройству автоматизации гроубокса

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

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

Схема подключения электрических компонентов к устройству автоматизации теплиц

Если необходимо управлять мощной высоковольтной нагрузкой, то надо добавить твердотельные или электромагнитные реле. Контроллер позволяет подключать реле с напряжением срабатывания 5 В непосредственно к клеммным колодкам. Защитные диоды не требуются. Они есть в контроллере.

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

 

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

Основное окно программы пока незначительно отличается от предыдущих вариантов. Тот же лаконичный интерфейс, только текстовая информация. Но это уже совсем другая программа.

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

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

В предыдущих версиях на NodeMCU был реализован Web-сервер. С телефона или другого устройства, подключенного к сети WiFi, браузер отправлял запрос на контроллер-сервер. В ответ приходила HTML-страница с данными. В ней была указана команда, требующая повторить запрос от браузера через 2 секунды. Таким образом, каждые 2 секунды страница обновлялась. Причем обновлялась полностью. Каждый раз передавался весь HTML-код главной страницы.

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

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

  • Второе отличие невозможно не заметить и не оценить.

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

Сейчас вариант с точкой доступа остался. Он необходим для случаев, где другой WiFi сети нет, например, в чистом поле. Но добавился вариант автоматического подключения к существующей сети. Теперь контроллер всегда подключен к вашей домашней сети. Для доступа к нему достаточно нажать иконку на телефоне, планшете или компьютере. Кстати, теперь я чаще управляю контроллером от компьютера, чем от телефона. И никаких переключений сетей делать не надо.

При исчезновении сети, например, выключили роутер, контроллер выполняет свои функции. Конечно, в этом случае им нельзя управлять. При появлении сети устройство подключается к ней автоматически.

  • К одной сети могут быть подключены несколько контроллеров.

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

  • В предыдущих версиях ПО параметры сети задавались в исходном тексте программы. Затем необходимо было  подключить контроллер к компьютеру, компилировать программу и загрузить исполняемый модуль в контроллер. У кого не было на компьютере Arduino IDE надо было еще ее установить.

Теперь все параметры сети и конфигурации задаются в Web-интерфейсе и сохраняются в энергонезависимой памяти контроллера.

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

Теперь подробно о работе с новым программным обеспечением.

 

Вход в режим конфигурации.

  • Выключить питание контроллера.
  • Нажать и удерживать кнопку “Конфигурация” контроллера.
  • Включить питание.
  • Удерживать кнопку нажатой не менее 1 сек.
  • Кнопку отпустить.

В режиме конфигурации светодиод мигает – 2 короткие вспышки, пауза 1 секунда.

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

После 5 минут отсутствия  действий устройство автоматически выходит из режима конфигурации.

 

Режим конфигурации.

Создается своя сеть WiFi (точка доступа).

  • Имя сети: Config_GrowBox_Cavr_1
  • Пароль: 12345678
  • IP: 192.168.4.1
  • Доменное имя – любое адресуется на этот IP.

При подключении к сети WiFi с именем Config_GrowBox_Cavr_1 на браузере открывается начальное окно конфигурации. Если не открылось, надо обратиться по адресу 192.168.4.1 или по любому имени с общепринятым расширением .ru, .com и т.п.

Окно режима задания параметров

Могут быть заданы 2 режима:

  • Своя сеть (точка доступа)
  • Подключиться к существующей сети (режим станции).

 

Режим точки доступа (своя WiFi-сеть).

В этом режиме работали предыдущие версии программного обеспечения.

Будет создана своя сеть.

Окно режима точки доступа

Для нее необходимо задать:

  • Имя сети.
  • Пароль сети.
  • IP-адрес.
  • Доменное имя – необязательный параметр.
    • Чтобы доменное имя не использовалось необходимо оставить это поле пустым. Убрать даже пробелы.
    • Если задать символ ”*” то обращение к любому имени будет переадресовываться к заданному IP-адресу. В этом случае достаточно подключиться к WiFi и главное окно программы должно открыться автоматически.
    • Можно задать имя и обращаться к нему через адресную строку браузера. Расширение должно быть .ru, .com и т.п. Иначе браузер может не понять, что это Web-сайт и открыть страницу поисковой системы.

 

Режим станции (подключение к существующей сети).

В этом режиме устройство автоматически подключается к существующей сети. Конечно, если правильно заданы параметры.

Окно режима станции

  • Имя сети, к которой подключается устройство.
  • Пароль этой сети.
  • IP-адрес.
    • Задается с учетом маски подсети 255.255.255.0. Например, у меня основной шлюз 192.168.0.1

Сетевые параметры

Можно посмотреть WIN+R -> cmd -> ipconfig ->. Подробнее в уроке ”Технология клиент-сервер.

Я должен задать 192.168.0.xx.

  • Если задан 0.0.0.0, то IP будет получен от сети (динамический адрес). Сомнительный вариант. Вы должны будете узнать адрес, и не факт, что при каждом подключении он будет один и тот же.

Доменное имя в режиме станции игнорируется.

 

Завершение конфигурации.

Следующим открывается окно, которое предлагает задать направление работы регуляторов температуры и влажности.

Окно выбора направления работы регуляторов

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

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

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

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

Окно завершения установки параметров

По завершению конфигурации произойдет сброс контроллера, а значит и выход из режима конфигурации.

Окно завершения установки параметров

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

 

Нормальный режим работы.

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

Если выбран режим точки доступа.

Устройство формирует свою сеть WiFi с заданными в конфигурации именем и паролем.

Необходимо подключиться к этой сети.

Если в поле конфигурации ”Доменное имя” задан символ “*”, то главное окно программы должно появиться само.

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

Светодиод в режиме точки доступа мигает с периодом 2 секунды: 1 секунду горит, 1 секунду погашен.

Если в устройстве обнаружена фатальная ошибка, то светодиод мигает с частотой 3 раза в секунду. Ошибка может быть из-за неисправности часов или не заданных параметров освещения и полива. В этом случае необходимо установить параметры.

Если выбран режим станции.

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

Если подключиться не получается, например, отключен роутер, то устройство полностью выполняет свои функции. Конечно без возможности управления и индикации.

Светодиод при этом 1 секунду горит, 1 секунду погашен.

Как только контроллеру удается подключиться к сети, в середине интервала погашенного светодиода появляется вспышка. По ней можно судить, все ли нормально с подключением.

 

У светодиода бывают такие состояния.

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

 

Главное окно программы.

Я создал на рабочих столах компьютера и телефона иконки с фиксированным IP-адресом. По ним открывается главное окно программы.

Главное окно программы автоматизации гроубоксов, теплиц, курятников

Каждую секунду информация обновляется.

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

Установка времени

Окно установки времени

Окно установки времени

 

 

 

 

 

 

 

 

 

 

 

 

 

Окно установки времени

В абзаце ”Освещение” отображается:

  • Время включения (08:00 ->).
  • Состояние освещения (***) ,при включении освещения звездочки становятся красными.
  • Время выключения (-> 18:00).

Абзац Освещение

Здесь же есть ссылка для установки времени включения и времени выключения светильников.

Задание параметров освещения

В абзаце полив:

  • Дни недели, в которые надо производить полив. Активные дни выделены жирным. У меня полив происходит в среду, пятницу и воскресенье.
  • Время начала полива (20:30 ->).
  • Состояние полива (…..). Символы  ‘ ‘ ‘ ‘ ‘ показывают, что идет полив.
  • Длительность полива (+ 00:01:00). Здесь могут быть заданы секунды.

Абзац полив

  • Ссылка для установки параметров полива.

Установка параметров полива

Ссылки для ручного запуска и остановки полива. Запуск происходит на заданную длительность.

Запуск полива

Влажность почвы пока чисто информационный параметр.

Абзац влажность почвы

Датчик должен быть откалиброван.

Калибровка датчика влажности

  • При сухом датчике влажности почвы надо нажать ссылку ”Датчик сухой”.
  • Затем опустить его в воду и нажать ”Датчик в воде”.
  • Остается выйти из калибровки.

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

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

Абзац воздух

Область “Регуляторы” содержит параметры однотипных по функционированию регуляторов температуры и влажности воздуха. Как они работают, расскажу на примере регулятора температуры.

Абзац регуляторы

  • Символ ”*”  показывает, включен ли исполнительный элемент (нагреватель или вентилятор). Сейчас у меня включен. При выключении звездочка становится черной.
  • вкл: t > 10 – включение происходит при температуре выше 10 °C.
  • откл: t < 12 °C – выключение происходит при температуре ниже 12 °C.

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

  • Ссылка для установки параметров.

Установка параметров регуляторов

Здесь выбран режим ”Регулировка по датчику”. Коммутация нагрузки происходит в зависимости от измеренной температуры.

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

Сейчас задано включение на 15 минут каждый час.

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

Если выбрать режим  ”Циклическое включение”, то на основной странице поле регулятора температуры будет выглядеть так.

Параметры регуляторов

  • ”*” – состояние.
  • P= 01:00:00 – период 1 час.
  • T= 00:15:00 – время включения 15 минут.

Регулятор влажности выполняет такие же действия относительно датчика влажности.

Все просто, интуитивно понятно.

Программу можно загрузить по ссылке:

 

Зарегистрируйтесь и оплатитеВсего 60 руб. в месяц за доступ ко всем ресурсам сайта!
 

Как установить библиотеки для нее можно посмотреть в предыдущих статьях рубрики.

 

У меня устройство с новой программой работает уже 2 дня. Выключаю роутер, затем включаю – контроллер сам подключается к сети. Пока ошибок не вижу.

 

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

Предыдущая статья     Список статей     Следующая статья

0

Автор публикации

не в сети 2 недели

Эдуард

280
Комментарии: 1936Публикации: 197Регистрация: 13-12-2015

30 комментариев на «Базовое программное обеспечение контроллера автоматизированного выращивания растений (КАВР).»

  1. Эдуард, возможно ли приобретения данного изделия в виде готового продукта, с установленной программой на борту?

    0
  2. Эдуард, здравствуйте. Подскажите, а возможно ли сделать в КАВР поддержку цикличности полива в течении суток? Путем задания нескольких интервалов времени включения полива в течении текущих суток. Заранее спасибо.

    0
    • Здравствуйте!
      Там есть такой режим. Используется в регуляторах температуры и влажности. Можно выбрать режим «Циклическое включение», тогда задается период включения и длительность включения. Ничто не мешает использовать эти режимы для управления клапаном полива.

      0
      • Дело в том что по технологии растениеводства необходимо контролировать все четыре параметра. Влажность и температура в режиме реального времени (желательно ПИД-регулирование), освещенность включение и выключение подсветки у Вас задан интервал-это очень хорошо (дневное отключение (в зависимости от солнца) легко реализуется технически, полив-очень хорошо реализован для применения в гроубоксе на натуральном грунте, когда большая влагоемкость субстрата на корне. Для более перспективных применений необходимо так-же циклически осуществлять полив. Можно пообщаться в личке если Вам интересно. Я сам инженер могу разработать только железо, с программированием значительно тяжелее. А Ваш проект крайне интересен и перспективен.

        0
        • Здравствуйте!
          Вариант устройства, который я представил, бюджетный. Думаю, дешевле такое устройство не сделать.
          Есть мысли разработать очень мощный, универсальный контроллер для управления теплицами, гидропоникой, домашними растениями, оранжереями и т.п. Идеально для этой разработки подходит ESP32. Стабильно работающий WiFi, много выводов, обширная периферия, два ядра, громадный объем памяти. При этом цена платы в данный момент 250 руб.
          Но сейчас на сайте зарабатываю копейки. Гугл снял рекламу, Яндекс снизил оплату. Посещаемость упала. Не знаю, чего дальше ждать, над чем лучше работать.

          0
          • Есть пара идей. Могу поделиться, в частный сектор зайдет как готовое устройство. Но про мощный контроллер и я подумал когда ознакомился с Вашей работой. Я тоже работаю в данном направлении, но у меня проблема с программированием.

            0
          • Интересно, конечно. Просто, реализацию в данный момент обещать не могу.

            0
  3. Здравствуйте Эдуард!
    Спасибо за ваши труды!
    Попробовал сейчас залить вашу программу на новый nodemcu v3, но после задания конфигурации, устройство не подключается к домашней сети, в мониторе вечный реконнект к wifi:
    ets Jan 8 2013,rst cause:4, boot mode:(3,7)

    wdt reset
    load 0x4010f000, len 3460, room 16
    tail 4
    chksum 0xcc
    load 0x3fff20b8, len 40, room 4
    tail 4
    chksum 0xc9
    csum 0xc9
    v00051340
    ~ld
    Reconnect WiFi
    5:13:52 1.1.0
    H=684

    Если делать в режиме точки доступа, то точка доступа создается, но в мониторе циклится вот это и «сайт» не работает:
    ets Jan 8 2013,rst cause:4, boot mode:(3,6)

    wdt reset
    load 0x4010f000, len 3460, room 16
    tail 4
    chksum 0xcc
    load 0x3fff20b8, len 40, room 4
    tail 4
    chksum 0xc9
    csum 0xc9
    v00051340
    ~ld
    WiFi AP built, HTTP server started
    5:8:46 1.1.0
    H=684

    + стэк трэйс ошибки

    1
    • Здравствуйте!
      В режиме задания конфигурации устройство работает, как точка доступа. Непонятно, почему происходит сброс в рабочем режиме.
      Попробуйте при загрузке программы установите режим стирания WiFi установок или всего FLASH. Инструменты -> Erase FLASH -> Sketch + WiFi Settings.
      Внимательно проверьте информацию, которую вы задаете при конфигурации. Не должно быть кириллических символов, лишних пробелов.

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

        0
      • В логе компилятора такие ошибки:
        C:\Users\user\Downloads\growbox\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4.ino:1863:54: warning: trigraph ??< ignored, use -trigraphs to enable [-Wtrigraphs]
        1863 | client.print(F(" ?? ?? ?? ?? ?? ?? ??»));
        |
        C:\Users\user\Downloads\growbox\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4.ino: In function ‘void setup()’:
        C:\Users\user\Downloads\growbox\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4.ino:282:26: warning: ‘void timerISR()’ is deprecated: Use IRAM_ATTR in place of ICACHE_RAM_ATTR to move functions into IRAM [-Wdeprecated-declarations]
        282 | timer1_attachInterrupt(timerISR);
        | ^~~~~~~~
        C:\Users\user\Downloads\growbox\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4.ino:141:22: note: declared here
        141 | void ICACHE_RAM_ATTR timerISR() {
        | ^~~~~~~~
        C:\Users\user\Downloads\growbox\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4.ino:282:34: warning: ‘void timerISR()’ is deprecated: Use IRAM_ATTR in place of ICACHE_RAM_ATTR to move functions into IRAM [-Wdeprecated-declarations]
        282 | timer1_attachInterrupt(timerISR);
        | ^
        C:\Users\user\Downloads\growbox\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4.ino:141:22: note: declared here
        141 | void ICACHE_RAM_ATTR timerISR() {
        | ^~~~~~~~
        In file included from C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/Arduino.h:286,
        from C:\Users\user\AppData\Local\Temp\arduino_build_551692\sketch\GrowBox_CAVR_1_4.ino.cpp:1:
        C:\Users\user\Downloads\growbox\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4.ino: In function ‘void loop()’:
        C:\Users\user\Downloads\growbox\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4.ino:356:36: warning: unknown escape sequence: ‘\.’
        356 | client.println(F(«<input name=\"ipadr\" style=\"font-size: 1.2rem\" pattern=\"\\d{1,3}\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\" value=\""));
        | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/WString.h:39:76: note: in definition of macro 'FPSTR'
        39 | #define FPSTR(pstr_pointer) (reinterpret_cast(pstr_pointer))
        | ^~~~~~~~~~~~
        C:\Users\user\Downloads\growbox\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4.ino:356:34: note: in expansion of macro ‘F’
        356 | client.println(F(«<input name=\"ipadr\" style=\"font-size: 1.2rem\" pattern=\"\\d{1,3}\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\" value=\""));
        | ^
        C:\Users\user\Downloads\growbox\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4.ino:420:31: warning: format '%x' expects argument of type 'unsigned int*', but argument 3 has type 'char*' [-Wformat=]
        420 | sscanf(bf,"%x", &lt );
        | ^~~~ ~~~
        | |
        | char*
        C:\Users\user\Downloads\growbox\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4.ino:383:21: warning: unused variable 'tempr' [-Wunused-variable]
        383 | int tempr, tmps, i;
        | ^~~~~

        Расшифровка лока из монитора (то что описывалось выше):
        Exception 6: IntegerDivideByZero: QUOS, QUOU, REMS, or REMU divisor operand is zero
        PC: 0x4000dce5
        EXCVADDR: 0x00000000

        Decoding stack results
        0x4020b2bf: __analogRead(uint8_t) at C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring_analog.cpp line 35
        0x40209408: Print::print(unsigned int, int) at C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\Print.cpp line 137
        0x40203112: loop() at C:\Users\user\Downloads\growbox\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4/GrowBox_CAVR_1_4.ino line 803
        0x4010075d: millis() at C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring.cpp line 193
        0x4010065a: timer1_attachInterrupt(timercallback) at C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\core_esp8266_timer.cpp line 54
        0x402013c6: setup() at C:\Users\user\Downloads\growbox\GrowBox_CAVR_1_4\GrowBox_CAVR_1_4/GrowBox_CAVR_1_4.ino line 286
        0x401002b8: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\core_esp8266_main.cpp line 181
        0x4020a2e8: loop_wrapper() at C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\core_esp8266_main.cpp line 201

        0
        • Очень много людей повторили разработку. Без всяких проблем.
          Вот мое окно результатов компиляции.
          Неверная библиотека найдена в D:\Arduino Projects\libraries\1: нет заголовочных файлов (.h), найденных в D:\Arduino Projects\libraries\1
          Неверная библиотека найдена в D:\Arduino Projects\libraries\1: нет заголовочных файлов (.h), найденных в D:\Arduino Projects\libraries\1
          Неверная библиотека найдена в D:\Arduino Projects\libraries\1: нет заголовочных файлов (.h), найденных в D:\Arduino Projects\libraries\1

          Неверная библиотека найдена в D:\Arduino Projects\libraries\1: нет заголовочных файлов (.h), найденных в D:\Arduino Projects\libraries\1
          Executable segment sizes:
          IROM : 293548 — code in flash (default or ICACHE_FLASH_ATTR)
          IRAM : 28884 / 32768 — code in IRAM (ICACHE_RAM_ATTR, ISRs…)
          DATA : 1280 ) — initialized variables (global, static) in RAM/HEAP
          RODATA : 1624 ) / 81920 — constants (global, static) in RAM/HEAP
          BSS : 26000 ) — zeroed variables (global, static) in RAM/HEAP
          Скетч использует 325336 байт (31%) памяти устройства. Всего доступно 1044464 байт.
          Глобальные переменные используют 28904 байт (35%) динамической памяти, оставляя 53016 байт для локальных переменных. Максимум: 81920 байт.

          0
          • на 2.6.3 все заработало! Спасибо!
            Но в логе компиляции те же ошибки.
            Они не в конце лога, а в середине
            Попробуйте пожалуйста свой лог покрутить вверх, там будут аналогичные ошибки связанные с синтаксисом в основном.
            Еще раз спасибо за ваши труды!)

            0
  4. Здравствуйте. Не понятно, как работает регулировка температуры. Если температура включения меньше температуры выключения, то выход работает только по температуре выключения, а именно : при превышении этой температуры происходит включение, а при уменьшении ниже этой температуры — выключение. Если температура включения больше температуры выключения, то выход включается при превышении температуры включения и выключается при понижении температуры выключения. В первом случае это нагреватель, но тогда нет гистерезиса как для охлаждения. И надписи вкл. и выкл. надо местами поменять. Возможно я чего то не понял.

    0
  5. Добрый день, хочу собрать контроллер, прошивка и схема на данный момент (при регистрации и оплате) рабочие?

    0
  6. Здравствуйте, Эдуард!
    Я хочу сделать на базе Вашего проекта КАВР мастер устройство для сети RS485 из контроллеров Arduino Pro mini соединенных по протоколу ModBus. Подскажите будет ли работать Ваша библиотека Tiny_ModBusRTU на плате Wemos D1 mini? Нужно ли будет преобразовывать уровни сигналов для конвертера на MAX485 с трех вольт до пяти?

    0
    • Здравствуйте!
      Скорее всего, работать не будет. Мастер передает запрос для ведущего устройства, ожидает окончание передачи собственных данных и разворачивает драйвер RS-485 на прием ответа. В библиотеке момент окончания передачи данных определяется по аппаратному флагу интерфейса UART Atmega168/328. Надо определять именно окончание передачи последнего бита, а не последнего байта из буфера Serial. Вряд ли в вашей плате есть такой же бит с таким же названием. Скорее всего, при компиляции будет ошибка.
      Уровни выходные по отношению к плате преобразовывать не надо, а входной можно снизить резисторным делителем с коэффициентом 3,3/5.

      0
      • Плата Wemos D1 mini это почти таже NodeMCU на томже контроллере ESP8266 только размерами поменьше. По поводу уровней: если MAX485 со стороны ESP8266 запитать от 3,3 В, а со стороны Atmega328 будет ли так работать? Или ниже пяти вольт MAX485 не будет работать?

        0
        • Сам MAX485 надо запитать от 5 В, иначе уровни RS-485 будут заниженные.
          Сигнал от MAX485 с уровнем 5 В нельзя подавать непосредственно на ESP8266. Поэтому его надо снизить. А сигналы уровнями 3 В от ESP на MAX подавать можно.

          0
        • Вот проблемное место в библиотеке:

          else if(_mode == 2) {
          // ожидание окончания передачи
          if( (UCSR0A & 64) != 0 ) {
          if( _noDirectPin == false ) digitalWrite(_directPin,LOW);
          while (true) { if (Serial.read() == 0xffff) break;} // сброс порта
          _timeOutRcCounter=0;
          _mode=3;
          }
          }

          Бит (CSR0A & 64) показывает, что регистр передачи UART пуст. Может в ESP8266 есть функция проверки этого события.

          0
  7. Спасибо за ответ.
    Эдуард, не планируете ли проект для рубрики «умный дом» с мастер устройством и Wed-интерфейсом?

    0

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".