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.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    В Globals. h указываем тип платы, под которую компилируем. В зависимости от типа платы (в Globals. h есть комментарии) настройки находятся либо в Configuration_MEGA.h, либо в Configuration_DUE.h, либо в Configuration_MEGA_MiniBoard.h. По умолчанию на гитхабе лежит так, что настройки применяются с Configuration_MEGA.h.
     
  2. Old-Admiral
    Регистрация:
    30.03.16
    Сообщения:
    191
    Благодарности:
    153

    Old-Admiral

    Живу здесь

    Old-Admiral

    Живу здесь

    Регистрация:
    30.03.16
    Сообщения:
    191
    Благодарности:
    153
    Спасибо, Дим. Премного благодарен!
     
  3. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Обновил конфигуратор и прошивку универсального исполнительного модуля. Из нововведений: появилась возможность адресации модуля на шине, если он поддерживает обратную связь: теперь необязательно DIP-переключателями назначать адрес модуля, можно просто через конфигуратор ;) Настройки компиляции прошивки модуля позволяют выбрать тип адресации - будет ли это настройка при регистрации на главном контроллере - или тупо железная адресация.

    Короче, платы можно упрощать :)]:aga:
     
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Обновил немного ArduinoCore, чтоб под Due компилировалось. Добавил тип датчика "Температура с DS3231", чтобы отделить мух от котлет - всё-таки температура с RTC - это вещь вторичная, и не всем нужная.

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

    Наверное, после окончания работ над контроллером теплицы этот проект будет приоритетным, т. к. имея на руках мощный инструмент настройки всей обвязки, типа опроса датчиков и всяких настроек Wi-Fi, MQTT и т. п., и конфигурационный софт - можно будет очень сильно облегчить написание любого проекта, будь то умный дом или контроллер пивоварни - пиши только конкретную логику поведения, и всё, а остальное - опрос датчиков, публикация во внешний мир и т. п. - будет настраиваемо и работать автоматически ;) Ну и, очевидно, что со всеми плюшками Uno опять - в топку, ибо банально мало места для всех планируемых вкусностей, к сожалению.

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

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

    И как первая версия будет готова - приглашу всех желающих сделать на ней чего-нибудь нужного для домашнего хозяйства ;) Но это будет нескоро.
     
  5. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

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

    promavto

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

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    Я понял, ты сначала "буксуешь", а потом в три минуты реализуешь:)].

    Про температуру DS3231. Внутри встроен микротермостат, который пытается раз в три минуты регулировать температуру. В предыдущих проектах приходилось синхронизировать несколько устройств.
    Только этими часами удалось получить приемлемый результат. Поэтому рекомендую всем применять эту микросхему в часах и не в коем случае DS1307.
    Это я так в качестве информации.
     
    Последнее редактирование: 10.01.18
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Естественно, я тоже только за DS3231 ;) Другого нам не надоть.
     
  7. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    Это точно! Подтверждаю: DS1307 - полная хрень! За сутки время может "отстать" или "убежать" больше, чем на 5 минут! :ogo::mad:
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Пока ввожу разные типы записей в конфиг, учитывая предыдущие востребованности:
    Код:
     //---------------------------------------
          ESPSettingsRecord, // настройки ESP
          0, // флаг - поднимать ли точку доступа (1 - поднимать, 0 - не поднимать)
          '\0',  // имя точки доступа (набор байт, заканчивающийся нулевым байтом)
          '\0', // пароль точки доступа (набор байт, заканчивающийся нулевым байтом)
          1, // флаг - коннектиться ли к роутеру (1 - коннектиться, 0 - не коннектиться)
          'F', 'l', 'y', '\0', // SSID роутера (набор байт, заканчивающийся нулевым байтом)
          'H', 't', 'R', 'j', '7', 'U', 'J', 'Q', '\0', // пароль роутера (набор байт, заканчивающийся нулевым байтом)
          12, // скорость работы с ESP (1 - 9600, 2 - 19200, 4 - 38400, 6 - 57600, 12 - 115200)
          1, // номер Serial, который используется для работы с ESP (1 - Serial1, 2 - Serial2, 3 - Serial 3)
          0, // использовать ли пин пересброса питания при зависании ESP (0 - не использовать, 1 - использовать)
          0, // номер пина для пересброса питания ESP
          30, // кол-во секунд, по истечении которых модем считается зависшим (не пришёл ответ на команду)
          2, // сколько секунд держать питание выключенным при перезагрузке ESP, если он завис
          2, // сколько секунд ждать загрузки модема при инициализации/переинициализации
          1, // уровень для включения питания (1 - HIGH, 0 - LOW)     
        //---------------------------------------
          FractDelimiterRecord, // // разделитель целой и дробной частей
          ',', // у нас этим разделителем будет запятая
        //---------------------------------------
          TemperatureUnitRecord, // // вид измеряемой температуры (цельсии - UnitCelsius или фаренгейты - UnitFahrenheit)
          UnitCelsius, // у нас будут цельсии
        //---------------------------------------
    Как видите - в будущем в софте можно будет настраивать и разделитель целой/дробной части показаний, и вид измерений температуры (Цельсии/Фаренгейты), и уже сейчас припилил по-максимуму возможные настройки для ESP - как видите, в будущем без перекомпиляции прошивки можно будет менять скорости работы с ESP и Serial, на который она прикреплена ;) Короче, настроить можно будет под любые практически хотелки - я стараюсь :|:

    Всё уже читается/сохраняется в память ;). Эдак мы потихоньку и до транспорта через ESP дойдём, пока гироскопы из Китая едут :)]:aga:
     
  9. Berendey-70
    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139

    Berendey-70

    Живу здесь

    Berendey-70

    Живу здесь

    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139
    Точность работы DS1307 определяется кварцем. 5 минут в сутки - либо брак DS1307\ кварца, либо кривые руки в виде неправильно выбранного кварца, кривой разводки, неочищенной\ не той хренью очищенной платы.
     
  10. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Перенёс проект настраиваемого ядра на гитхаб: https://github.com/Porokhnya/ArduinoCore - теперь все изменения будут там, тут я уже особо распинаться не буду, дабы не захламлять тему пока посторонним материалом. Кому интересно - можно чекаутить гит, и будет всегда актуальная версия. А как уже будет конкретно что показать красивого - обязательно покажу/расскажу ;)
     
  11. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

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

    promavto

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

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    Протестировал ArduinoCore на микроконтроллере SAM3X8E (DUE). Работает. Есть замечание.
    В связи с существующими конфликтами адресов по шине I2C (DS3231 и MPU9250 у обеих адрес 0х68), я часы подключаю к шине SCL1 и SDA1. Поэтому желательно иметь возможность указывать к какой шине подключено устройство или хотя бы DS3231. Возможны конфликты и других устройств в будущем. И еще - может автоматически определять установленную память что бы уменьшить количество настроек? Но это уже не обязательно, но иногда приходится вскрывать устройство для уточнения типа памяти. Это так, на будущее.

    DS3231 DS3231 (SDA1, SCL1); Пока не определил куда можно вставить эту строчку.
    Варианты не связанные с программированием прошу не предлагать. :no:
     
    Последнее редактирование: 11.01.18
  12. Old-Admiral
    Регистрация:
    30.03.16
    Сообщения:
    191
    Благодарности:
    153

    Old-Admiral

    Живу здесь

    Old-Admiral

    Живу здесь

    Регистрация:
    30.03.16
    Сообщения:
    191
    Благодарности:
    153
    Привет, Дима!
    В свежей прошивке небольшие косячки
    In file included from sketch\ModuleController.h:18:0,
    from C:\Temp\Arduino\GreenhouseProject_11_01_2018\Main8\Main8.ino:9:
    sketch\LogModule.h:6:19: fatal error: SdFat. h: No such file or directory
    #include <SdFat.h>
    ^
    compilation terminated.
    exit status 1
    Ошибка компиляции.
    :-(
     
  13. Old-Admiral
    Регистрация:
    30.03.16
    Сообщения:
    191
    Благодарности:
    153

    Old-Admiral

    Живу здесь

    Old-Admiral

    Живу здесь

    Регистрация:
    30.03.16
    Сообщения:
    191
    Благодарности:
    153
    Да, это имеет место быть. Модуль DS1307 вообще не завёлся. Выбросил.
    Проект реализован на DS3231 - сезон отработал как часы ;-) Да и сейчас контроллер молотит на подоконнике.
     
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Ага, принимается ;)
     
  15. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Это не косяки, это надо тебе библиотеку SdFat установить - она в папке libraries проекта ;) Переползли на другую библиотеку работы с SD, чтобы под Due работало ;)
     
Статус темы:
Закрыта.