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

Arduino Mega. Контроллер теплицы. Хроники - 3.0

Тема в разделе "Умный дом", создана пользователем Анкор Плюс, 27.04.17.

Статус темы:
Закрыта.
  1. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Обновил на гитхабе, добавил опцию (как обычно, отключаемую) - посылать ли СМС с определённым текстом при старте контроллера в работу - см. настройку SEND_WORK_STARTED_SMS.

    @necrjd, можете пробовать. Я попробовал - приходит.
     
  2. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Что там и чем пронизано? Внутри DS3231Support.h - всего ОДИН класс, с куцым набором методов. Крайне просто внутри этих методов вызывать что хочешь откуда хочешь, сохранив таким образом совместимость. Но нет же - Дима всё пронизал "глючным" классом. Который, к слову, прекрасно работает в других проектах, ты знаешь, о чём я веду речь: код там тот же самый.

    Такое "пронизывание", кстати - сделано умышленно, как раз для целей наилегчайшей смены библиотек, если вдруг понадобится: очевидно, что не все библиотеки обязаны называться DS3231, а какая-то из них, самая подходящая, будет называться DS3231_Super_Library, и придётся тебе в тыще мест менять include, вместо - ОДНОГО места, коим является класс-прослойка DS3231Support, переводящий данные ЛЮБОЙ библиотеки в понятный проекту вид. Будешь спорить, что структуры, описанные библиотеками, могут быть побайтово и по именам полей разные? Дима специально пронизал вот так, чтобы Диме было удобней, ибо этот подход в большом проекте - единственно расово верный.

    Повторюсь в третий, и последний, раз: дело не в коде опроса DS3231.
     
    Последнее редактирование: 13.05.18
  3. necrjd
    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98

    necrjd

    Живу здесь

    necrjd

    Живу здесь

    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98
    да, работает! :super: спасибо!
     
  4. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    Дима!
    Пока не пробовал последние обновки, завтра отпишусь обязательно.
    В качестве прикола.
    Одно окно повисло сегодня (значит был перегруз аппаратный).
    И это нормально, т. к. на этом же столе (рядом с контроллером) мучал мотор от пылесоса.
    Искра от коллектора хоть в место сварки используй! Такого жесткача ни один проц не перенесет.
    А gprs работает нормально до сих пор.
    Что у меня происходит с контроллером?
    Да сам не пойму, уже все перелопатил не один раз.
    Правила и конфиг сброшу при необходимости.
    Ну и еще картинки с выставки.
    В теплице стоит бочка (вертикальная труба) для полива.
    На трубе параметрические датчики уровня минимального-максимального для управления насосом колодца.
    Ну и отдельный кран для получения питьевой воды непосредственно из колодца (минуя бочку).
    Нажимаем кнопку (пин управления насосом),открываем кран и набираем воду. Закрываем кран, выключаем пин насоса, и при необходимости (срабатывают датчики уровня) наполненяем бочку.
    Это теория которая работала на практике пару лет.
    Давеча наше "Величество женщина" сделала все как положено по регламенту, но забыла закрыть кран для питьевой воды.
    В результате.
    Благо пол в теплице из огрызков кафеля и под уклоном.
    Когда сработал полив по алгоритму, уровень в бочке упал, насос в колодце включился и водичка потекла, но не в бочку, а через открытый кран на пол.
    Хоть у меня и было сделано аппаратное ограничение по времени на работу насоса, но несколько совковых лопат плывуна через сутки (когда просохло) собрал и вынес из теплицы.
    Из потерь.
    Насос жив. Слава Богу. Клапана тоже живы.
    Труба (закопанная,хоть и не глубоко) забита плывуном и ждет продувания (на досуге).
    По поверхности проброшен авральный вариант.
    Выводы.
    Старая преферансная поговорка "Интеллект против пёра бессилен".
    Ничего нового.
    Надеюсь кого-то повеселил...
     
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    @promavto - добавил возможность перенести часы на второй аппаратный I2C, см. настройку DS3231_WIRE_NUMBER.

    Пересмотрел ещё раз код работы с часами (а его там мизер) - никакого криминала. Можно взять АБСОЛЮТНО любую библиотеку работы с DS3231 и сравнить код запроса текущего времени из часов (это у нас точка преткновения, вроде как) в части работы с классом Wire. Если он будет отличен от моего - я очень удивлюсь, и даже съем шляпу с аватарки.

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

    Ещё раз повторюсь: ДО МОМЕНТА ЧТЕНИЯ С ЧАСОВ - идёт работа с EEPROM на I2C, в момент, когда читается с часов - с памяти что-то прочитано и, возможно, линия данных УЖЕ в низком. Т. е. первоначальное чтение с часов может являться не причиной, а ПОСЛЕДСТВИЯМИ, которые проявляются в виде зависания. Проверить это довольно легко - достаточно закомментировать в setup получение данных с часов и вывод их в Serial.

    На меге я ещё ни разу не сталкивался с тем, чтобы часы как-то глючили. А вот I2C-шную память на меге я не использую, к слову - там юзается EEPROM. Возможно, где-то закралась очень тонкая зависимость, кто знает. Пока думаю о вариантах, стараюсь обезопаситься от side-эффектов по полной - ввёл на момент инициализации setup флаг, что yield нельзя вызывать, в самом конце setup разрешаю вызов yield - кто знает, может и в этом дело, чем чёрт не шутит. В общем, пока проверяй, я буду думать дальше.

    Ты мне лучше скажи: как происходит пересброс контроллера при нажатии reset? Чтобы я знал, на что грешить, что называется. Почему спрашиваю: если пересброс не честный, то могут быть проблемы. Под "честностью" понимаю следующее: в МК очищаются все регистры, оперативка, заново подгружаются все глобальные переменные в память (стартовая инициализация), и управление передаётся программному коду. Так всё реализовано?

    Кстати сказать, в своё время я был очень удивлён, что при старте этого чудесного камня глобальные переменные не принимают значения соответственно стандарту С+, если значения прямо не указаны: ожидаешь в объявленной переменной 0, а там - мусор. Возможно, дело даже в этом может быть, в новых проектах, уже обжёгшись, я всю шелуху принудительно в конструкторах обнуляю. А вот в прошивке контроллера теплицы, из-за того, что работа с чудным камнем Due началась посередине реки - может и такой нюанс быть. Именно поэтому я и просил - максимально минимальная конфигурация прошивки для воспроизведения бага ;)
     
    Последнее редактирование: 14.05.18
  6. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    У меня опять вопрос сейчас 2 теплицы реально рабочие. в обоих одинаковая конфигурация - ну почти одинаковая в одно 2 датчика температуры в другой 1 температуры и 1 влажности. суть не в этом настройки в конфигураторе одинаковые. так собирался и таи и там добавить по датчику

    та к вот по wifi одна устойчиво получает адрес не от роутера, а в диапазоне 192.168.4.4 сама точка контроллера 192.168.4.1 встает. есп менял на разные - картина одна. второй контроллер гораздо дальше от роутера но работает нормально и esp одинаковые
    кто подскажет куда копать ?

    да оба контроллера на меге
     
  7. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957
    Адрес:
    г. Москва, Зеленоград.
    Дима, ты прямо читаешь мои мысли. У меня есть пара контроллеров с подключенными часами на SDA1, SCL1. Прихватил с собой на работу, думал переделать для проверки.
     
  8. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957
    Адрес:
    г. Москва, Зеленоград.
    Закачал новый вариант с SDA1, SCL1. Странно, нет активности на шине SDA1, SCL1.

    Настройка
    #define DS3231_WIRE_NUMBER 1
    Должно быть по условию.
    wireInterface = &Wire1;
     
  9. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957
    Адрес:
    г. Москва, Зеленоград.
    Проверил другой тестовой программой (аналоговые часы). Настройка в ней
    / Init the DS3231 using the hardware interface
    DS3231 rtc (SDA1, SCL1);

    работает нормально. Часы идут.
     
  10. vworld
    Регистрация:
    08.01.14
    Сообщения:
    149
    Благодарности:
    32

    vworld

    Живу здесь

    vworld

    Живу здесь

    Регистрация:
    08.01.14
    Сообщения:
    149
    Благодарности:
    32
    Адрес:
    Екатеринбург
    Все темы не прочитать - но вопрос есть - есть ли видео работы проекта в боевых условиях?
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Это вопрос точно не ко мне - это ESP сама рулит Wi-Fi стеком, что нам она делает с роутером - хз. Имена точек доступа ESP разные, надеюсь?
     
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Именно в боевых? У меня нет. В отладочных - на моём канале на ютюбе есть кой-чего.
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    А, ну правильно - Дима шляпа - он же не инициализирует I2C1 :) Поправлю.
     
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Саш, поправил, обновил на гитхабе, пробуй. Для EEPROM-памяти такую же настройку сделать - выбор I2C?
     
  15. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    естественно

    БЛИН! сорри что кричу - в машине тестовый лежал на акб подключеный с тем же именем ..
    надо быть внимательней
     
    Последнее редактирование: 14.05.18
Статус темы:
Закрыта.