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

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

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

Статус темы:
Закрыта.
  1. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    Ошибки не выдаёт, но и нечего не показывает, 0 вместо 100
     
    Последнее редактирование: 21.12.17
  2. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    А если просто попробовать первый символ вывести:
    Код:
    $.p4[0]
    
    - что покажет?
     
  3. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Ясно, значит, тама всё печально в смысле такого функционала - юзается чистый JsonPath, без всяких плюшек. Ок, уберу значок процентов, обновлю и отпишусь.
     
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    @Shelllonn, обновил, убрал значок процентов, пробуйте.
     
  6. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    Работает
     
  7. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Чудесно ;) Теперь можно и слайдеры круговые юзать в клиенте, так? ;)
     
  8. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    Да, с ними боролся. работают.
     
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Обновил прошивку, добавил новую команду CTGET=STATE|WINDOWPOS - она возвращает кучей состояние открытости окон в процентах от максимального. Думаю, будет востребована, т. к. надо будет и в вебморде потом делать слайдеры открытия, и вообще...

    Пока к проверке GSM под Due руки не дотягиваются - буду писать первую версию модуля обратной связи, только с тестовыми данными и только по RS-485 - надо вместе с ним проверять, как отрабатывает по сети, как на это реагирует прошивка, проверить всю логику и т. п.
     
  10. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    На каждое окно информации занято по 10 бит: 7 бит - процент открытия, два бита - под концевики, 1 бит - флаг наличия информации о позиции. Поскольку прошивка поддерживает 16 окон, информации той получилось 160 бит (это с учётом упаковки, т. е. всё пишется линейно, а не побайтово), или 20 байт, по простому. Короче - еле влез в пакет 30 байт, один байт только остался свободным в пакете :)

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

    Правила. Вот эти товарищи работают чётко: сказано открыть окно при достижении температуры - они и откроют окно по достижении температуры. Обновили позицию по обратной связи - правила увидели, что позиция обновлена - и снова послали команду окнам на открытие (ну температура же выше уставки!). Соответственно - окно прётся, уже физически, в новую позицию. Смекаете, к чему я, про этот самый гистерезис? Вот в правилах описано - при Т 30 градусов - открыть окна наполовину: ок, они открываются. А обратная связь выдаёт нам позицию в 49%. Сима, шо делать? Правильно - игнорировать, ибо не такая уже и большая эта ваша разница, Шмулик.

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

    По железной части: акселерометры, которые предлагались - они ж вроде на I2C, верно? Как к окнам вытаскивать будем, товарищи? Учитывая тот факт, что это внутрикорпусный интерфейс, фактически? Ок, ладно, допустим - вытащили на несколько метров. Как подключить 16 датчиков с одним адресом на I2C? Дело даже не в том, что я не знаю - я знаю: надо через 74HC125 тупо рвать канал SCL всем датчикам, которые не участвуют в текущем сеансе опроса. Я про другое.

    Другое тут в том, что нам бы в пины уместиться: три пина заняты под адрес модуля (переключателями на плате), на каждый канал надо линию управления, микруха на 4 канала, в максимальном варианте надо 4 таких на плату, и 16 (16, Карл!) линий для управления каналами. Плюс - концевики где? Короче, печально по занятым пинам получается.

    Придётся для управления линиями - брать либо мультиплексор, либо ту де MCP23S17 ([хотя и тут вопрос - пины SPI тогда низзя трогать, от слова совсем - а их и так мало), либо - хз, надо подбирать оптимум. Но в любом случае - управление каналами разрыва SCL - надо пускать через шлюз.

    Да, можно сделать конфигурацию на 8 окон - тогда два таких модуля максимум можно к системе подключить. Можно сделать версию на 4 окна - и тогда таких модулей будет 4. Можно их комбинировать, не вопрос. Вопрос - в острой нехватке пинов, на первый взгляд (не забывайте, что RS485 тоже один пин отжирает, не считая UART).

    Поэтому вводная: набросайте мне схемку плз, чтобы вот прям вот можно было рулить 16 каналами четырёх 74HC125, и ещё бы три пина свободными были, под адрес модуля? Ну и по железу вот этого добра (говорю только о "размножении" пинов) - давайте обсудим, что лучше использовать? Можно всякие PCF на той же I2C поюзать - да кучу решений, надо определиться с конкретным. Жду :)
     
  11. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

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

    promavto

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

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    Добрый день всем! Замечания по протоколу I2C. На контроллере вверху слева возле разъема RS485 есть разъем протокола I2C. Можно задействовать линии SDA1, SCL1 Что бы развязать внутренний SDA и SCL. Есть мультиплексоры протокола I2C PCA9516APW 1 на 4 канала. Опробовано на предыдущей версии контроллера теплицы. Но все это не имеет перспективы - I2С внутренняя шина и далеко тащить очень сложно. необходимо применять резисторы порядка 1 ком по питанию что бы выровнять фронты сигнала из за большой емкости линии. Это увеличивает токи (нагрузку на линии) .Короче не вариант. Да и по деньгам проще применить Atmega328P, обработать положение окна и отправить хоть по RS485 или nRF24 или другому протоколу. Не забывайте что есть еще датчик угла который выдает аналоговые сигналы (X,Y,Z). Проще разработать универсальный протокол обмена с модулями, а может он уже задействован у Димы (не уточнял). Если проблема очень актуальна - разработаю схему и закажу в Китае плат штук 50. Это будет универсальный, регистрируемый модуль с функцией измерения угла поворота. Если нужно еще кому - сообщите.
     
  12. Berendey-70
    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139

    Berendey-70

    Живу здесь

    Berendey-70

    Живу здесь

    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139
    Полностью согласен с предыдущим оратором.

    Вопросы - сколько таких контроллеров будет на линии и как их адресовать?
    - Если контроллеров немного, то хватит DIP переключателей.
    - Если контроллеров много, то выводов опять не хватит, и нужно
    * или задавать адрес при настройке (ведущий контроллер по команде оператора выдает адрес, оператор нажатием кнопки периферийного контроллера указывает - "ты будешь жить с этим адресом").
    * или заранее прошить адреса в память типа AT24C в DIP корпусах, подписать карандашиком и понарасставлять их в панельки периферийных контроллеров.
     
    Последнее редактирование: 22.12.17
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Наверное, я непонятно объясняю, по пунктам повторюсь:

    1. Прошивка модуля обратной связи - для Atmega328 - есть, выложена сегодня утром;
    2. Эта прошивка - для модуля обратной связи, который подключается на шину RS-485;
    3. Подключать датчики положения - именно к нему, а не к контроллеру;
    4. Этот модуль УЖЕ работает по RS-485, сливая контроллеру инфу о позиции;
    5. Контроллер уже обрабатывает данные о позиции окон.

    Вопрос в том, что у нас прошивка для этого модуля должна уметь работать максимум с 16-ю окнами, на каждое окно, естественно, свой датчик. Если внимательно перечитать моё предыдущее сообщение, то будет понятно, о чём я веду речь. Сейчас речь не о плате, а о том, что настал момент в написании прошивки для модуля обратной связи, когда мне нужно ТОЧНО знать, какие датчики будем к нему подключать. Именно конкретно знать, и быть уверенным, что это хорошее решение. Пару страниц тому говорили за гироскопы/акселерометры - так они все I2C, я об этом речь и вёл: возникает сомнение, что это хороший вариант, т. к. датчики надо вытащить наружу именно он модуля обратной связи - поближе, чем от контроллера, но всё-же далеко в понятиях I2C. Не говоря уже о секасе с 16-ю датчиками с одинаковым адресом на шине I2С.

    Вопрос. Надеюсь, так понятней изложил.
     
    Последнее редактирование: 22.12.17
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Вкратце:

    1. Прошивка главного контроллера у нас поддерживает 16 окон MAX;
    2. Модуль обратной связи (прошивка для Atmega328), УЖЕ работающий по RS-485, поддерживает обслуживание до 16 датчиков положения окон;
    3. Модулей обратной связи может быть до 4-х на один контроллер (т.е. разные конфигурации можно юзать: 1х16, 2х8, 4х4, 1х8 + 2х4, 3х4 и т. п., где первое число - это кол-во модулей на линии, число после "х" - это кол-во окон, обслуживаемое модулем).
    4. DIP-переключатель выбора адреса стоит на самом модуле обратной связи, главный контроллер тут не при чём.
    5. Секас - читать из внешней EEPROM адрес, зачем, если можно побитово адресовать? Только чтобы сэкономить пины? Как вариант, конечно, надо прикидывать, главный-то вопрос - по датчикам, а не по DIP-переключателям, всё же ;)

    Надеюсь, так понятней изложил ту ситуацию, которая на текущий момент. Вопросы ТОЛЬКО про кол-во датчиков, которые можно подключить к модулю обратной связи, и как от НЕГО их вытащить подальше, если всякие акселерометры имеют I2C-интерфейс. Потому как вариант "одно окно - один модуль обратной связи" - никуда не годный.
     
    Последнее редактирование: 22.12.17
  15. Berendey-70
    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139

    Berendey-70

    Живу здесь

    Berendey-70

    Живу здесь

    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139
    i2c - интерфейс для внутриблочных соединений. 1м. Ну 2м.
    Если исходить из простоты схемы, монтажа и настройки, надежности работы, стоимости системы в целом, то 16х1 - самая подходящая конфигурация. (это, конечно, моё мнение).
    Сам инклинометр поставить на плату, вставить в небольшой плоский корпус типа такого https://www.chipdip.ru/product0/8309976374
     
Статус темы:
Закрыта.