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 км от Краснодара
    Обновил софт, практически все настройки уже разбираются и выводятся в интерфейс для редактирования:

    screen.png

    Осталось с настройками датчиков и пакетов RS-485 разобраться, и будет совсем весело.
     
  2. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

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

    promavto

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

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    Для внешних модулей пора применять SAMD21E18A. В ней куча памяти, UARTов и прочего. Цена практически такая же. Как подключать, прошивать могу предоставить информацию. Влезет все что нужно. Посмотрю наличие, один "лишний" модуль с LoRa и SAMD21E18A должен быть, отправлю ближайшей почтой. Только подпаяю MAX485.
     
  3. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Короче, проверил - не лызэ в крынку, не помещается в Atmega328 - издержки всех удобств, что называется: много кода занимает обработка RS-485 и т. п.

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

    А поддержку ESP я в прошивку введу. Поддержку в том смысле, чтобы ядро закачивалось на ESP напрямую - я уже раскидал заглушки в тонких местах ;)
     
    Последнее редактирование: 21.01.18
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    ВОООТ! Вот этого я и хотел услышать ;) нафик блин возиться с Atmega328, всё равно чипы развиваются потихоньку, и пока мы тут всё допилим, уже двадцать второй век наступит :)]:aga:

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

    Впрочем, про логику мы ещё подумаем - возможно, таки будет что-то типа IL ;)

    З. Ы. Кстати вопрос: SAMD21E18A прошивается тем же набором, что и Due? Это я к чему - тип камня определяется директивами условной компиляции, поэтому тот или иной код зависит от типа камня. Возможно, придётся адаптировать код под указанный камень. Но это пока на будущее, всё сделаем, как основное реализуем.
     
  5. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    Порог вхождения повысится, этим будут пользоваться считанные люди
     
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Не, ты не понял: ядро уже сейчас умеет компилироваться под разные камни, в зависимости от того, что ты выбрал в Arduino IDE. Т. е. поддержка Atmega2560 и Due - никуда не денется ;) Просто речь идёт о том, что ядро само по себе - универсально, и позволяет быро настроить периферию, не влезая в дебри рутины, а оставив пустую loop() для написания логики конкретного проекта. Таким образом - в рамках одной системы - всё однотипно: все умеют конфигурироваться через один софт, все умеют работать с известными форматами пакетов и т. п. Удобно, считаю ;)
     
  7. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Щас буду упрощать ядро: поскольку практически решено, что ядро - оно универсально (с учётом ограничения на используемые МК), то в логику не стоит отдавать разбор пакетов RS-485 в режиме Slave, т. к. ядро должно само уметь обмениваться известными пакетами информации, типа выдачи наружу по запросу от мастера показаний датчиков. Щас подумаю, что к чему - и будет видно ;)
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    В общем, обновил я ядро, теперь RS-485 может как опрашивать шину (режим мастера), так и отдавать показания датчиков в шину (режим Slave). Тестировать придётся по новой, т. к. теперь нужны две Меги, чтобы на каждой из низ было закачано ядро со своими настройками. Впрочем, код брал с тестового скетча, где всё работало, так что будем надеяться, что перенёс всё правильно.

    Теперь части системы умеют автоматом обмениваться информацией по шине RS-485, где один мастер собирает данные со всех слейвов. Ограничения прежние - 50 устройств на шине, до 255 датчиков в устройстве, каждый датчик в пределах кластера должен иметь своё уникальное имя (максимум 9 символов).

    Событие для RS-485 убрал, теперь всё крутится полностью в ядре. В своё время так же будет и с Lo-Ra, видимо.

    Единственный минус того, что события убраны - всё, теперь универсального обработчика в логике не получить - всё завязано на формат конкретного пакета, известного системе. Т. е. налицо потеря универсальности. Впрочем, для меня это не особо критично, т. к. даже если брать какой-то проект в разработку - всегда можно настоять на использовании ядра - это раз, а уж если так надо свои пакеты разбирать на шине - можно подумать, каким образом ввести в ядро директивы условной компиляции, чтобы менеджер того же RS-485 делал рутину, предоставляя какие-то события в логику. Надо подумать, негоже отказываться от универсальности ;)
     
    Последнее редактирование: 22.01.18
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Сделал настраиваемой логику работы RS-485: либо мы даём ядру самому рулить шиной, либо - оно делает только обвязку (настраивает Serial и прочее), а мы, когда надо - можем читать/писать оттуда. Настройка в CoreConfig. h, называется CORE_RS485_DISABLE_CORE_LOGIC.

    Теперь можно в любом проекте получить обвязку для RS-485, настраиваемую через конфигуратор. А конкретная логика - да хоть какая ;)
     
  10. Berendey-70
    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139

    Berendey-70

    Живу здесь

    Berendey-70

    Живу здесь

    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139
    Не самый распространенный камень. В России Атмеловские АРМы не получили распространения. Редкие. Победил STM32.
     
  11. Berendey-70
    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139

    Berendey-70

    Живу здесь

    Berendey-70

    Живу здесь

    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139
    Может, ATMega128 https://github.com/MCUdude/MegaCore ?
     
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    В целом, ядро - это набор классов С+, т. е. если сильно зачесаться - его можно адаптировать под STM32, вот только стоимость этих работ, в любом исчислении - громадна, да и не хочу я под STM пока ничего писать: там очень закрытое комьюнити и вообще - каждый ССЗБ, что называется. Так что мы пока продолжим делать ди ай вай :)
     
  14. Berendey-70
    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139

    Berendey-70

    Живу здесь

    Berendey-70

    Живу здесь

    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139
    Если задаться задачей повторения устройств, то стоимость atmega128a в разы ниже: на али - от 53руб за кристалл. Дешевле atmega328p-au.
     
  15. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Да, это может быть важным, безусловно. Я посмотрел - у меня директивы условной компиляции и под Atmega1280 уже стоят ;) Так что все должно и под ней работать. Но пока ещё рано судить - никакой оптимизации проекта по расходуемой памяти не проводилось, так что...
     
Статус темы:
Закрыта.