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

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

Тема в разделе "Теплицы и парники", создана пользователем DIYMan, 05.01.16.

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

    DIYMan

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

    DIYMan

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

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

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
  3. Snark
    Регистрация:
    17.10.11
    Сообщения:
    366
    Благодарности:
    424

    Snark

    Живу здесь

    Snark

    Живу здесь

    Регистрация:
    17.10.11
    Сообщения:
    366
    Благодарности:
    424
    Адрес:
    Лобня
    Вместо такого:
    pinMode (LAMP_RELAYS,OUTPUT);
    digitalWrite (LAMP_RELAYS,RELAY_OFF);

    Должно быть
    SetPin (LAMP_RELAYS,RELAY_OFF, REFRESH);

    А в нем либо старый код, либо запись в массив для сдвигового регистра:
    SHIFT[PIN_NO]=NEW_VALUE
    if (REFRESH) { SHIFT_UPDATE()}

    Последнее - чтобы можно было в цикле выставить много значений и отправить в сдвиговый регистр за один раз, командой SHIFT_UPDATE();
     
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Да это понятно, там надо архитектуру менять немного. Поэтому начнём с форточек, а остальное - доточится со временем. Главное требование, как вы понимаете - не сломать то, что уже работает, а сделать так, чтобы работало и через сдвиговые, и так, как есть сейчас.
     
  6. Snark
    Регистрация:
    17.10.11
    Сообщения:
    366
    Благодарности:
    424

    Snark

    Живу здесь

    Snark

    Живу здесь

    Регистрация:
    17.10.11
    Сообщения:
    366
    Благодарности:
    424
    Адрес:
    Лобня
    Конечно подойдет.
    Кстати, не пожалейте пин на Latch.
    Не нужен нам дребезг на реле при записи цепочки в регистр.
     
  7. Snark
    Регистрация:
    17.10.11
    Сообщения:
    366
    Благодарности:
    424

    Snark

    Живу здесь

    Snark

    Живу здесь

    Регистрация:
    17.10.11
    Сообщения:
    366
    Благодарности:
    424
    Адрес:
    Лобня
    С "обычными" реле я не имел дела с 1984 года. Какие подходят для наших целей - не представляю. Так что Вы уж укажите точно - что за модель использоваться будет.
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Эммм. А те реле, которые стоят на шилдах - не потянут что ли? Открыть картинку любого шилда с али и посмотреть, какие там реле стоят. Надо, чтобы на 10А было - это точно, что знаю :)
     
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    При этом старая версия работает как и прежде - всё разруливается директивами условной компиляции.

    Код для актуальной записи в сдвиговый регистр не писал, кому вдруг срочно надо - в файле TempSensors. cpp есть функция WriteToShiftRegister - там есть указание, в каком месте вставить кусок кода для актуальной записи.

    Теперь, что касается железа: настала пора проектировать железный шилд для управления фрамугами. Итак, вводные:

    1. Закрытая коробочка, куда подводится отдельное питание;
    2. Все входы от меги - оптоизолированы;
    3. От меги - 3 входа, для работы через сдвиговый регистр;
    4. 16 реле на борту, для руления 8 форточками;
    5. Возможность соединять шилды в каскад через сдвиговые регистры (т.е. пробрасывать байт данных дальше). Как это реализовать железно - х. з., но в прошивке у меня нет ограничений на кол-во форточек, следовательно, если их будет 16 - то в шилд один за другим уйдут 4 байта, в каждом из которых - данные для одного сдвигового регистра;
    6. Идеально - проброс питания от одного шилда к другому, чтобы, запитав только первый шилд мощным БП и подключив второй (при необходимости) - имели на втором питание.

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

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

    Всё правильно изложил?
     
  10. D_J_Instruktor
    Регистрация:
    28.01.16
    Сообщения:
    35
    Благодарности:
    18

    D_J_Instruktor

    Участник

    D_J_Instruktor

    Участник

    Регистрация:
    28.01.16
    Сообщения:
    35
    Благодарности:
    18
  11. D_J_Instruktor
    Регистрация:
    28.01.16
    Сообщения:
    35
    Благодарности:
    18

    D_J_Instruktor

    Участник

    D_J_Instruktor

    Участник

    Регистрация:
    28.01.16
    Сообщения:
    35
    Благодарности:
    18
    Только не знаю точно, контакты нормально открыты или закрыты.
     
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    DIYMan

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

    DIYMan

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

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

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

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

    Собственно, даже переписывать ничего не придётся особо: я могу из любого модуля добавить любому другому модулю нужные датчики, и обновлять их показания - тоже. Так, кой-чего подпилить придётся местами, но это тоже решаемо.
     
  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 км от Краснодара
    Надеюсь, участвующие в обсуждении одобрят подобный подход: когда можно подключать датчики и так, и эдак. Поэтому, заранее, не дожидаясь одобрения, попытаюсь сформулировать необходимый минимум к реализации со стороны беспроводного датчика. Итак:

    1. Настраиваемый интервал между опросами (задаётся в прошивке к датчику);
    2. Вид пакета, отсылаемого по радио - меняется в зависимости от типа датчика;
    3. Каждый датчик имеет свой уникальный адрес.

    Теперь давайте пройдёмся по структуре пакета:

    1 байт - адрес датчика;
    1 байт - тип передаваемых показаний;
    1 байт - длина передаваемых показаний;
    n байт - показания;
    1 байт - контрольная сумма (CRC8, думаю, будет достаточно).

    Типы передаваемых показаний:

    1 - температура с DS18B20;
    2 - температура с влажностью с любых датчиков влажности (например, Si7021);
    3 - влажность почвы;
    4 - освещённость.
    далее - резерв на будущее.

    Длины пакетов для разных типов датчиков:

    1 - 2 байта;
    2 - 4 байта;
    3 - 2 байта;
    4 - 4 байта.

    Итого, при самой жирной конфигурации, пакет у нас будет занимать 1+1+1+4+1 - 8 байт. Что совсем немного, согласитесь.

    Остаётся вопрос выбора МК, который будет на стороне беспроводных датчиков. Понятное дело, что чем меньше он жрёт, тем лучше. Однако, для целей универсальности и повторяемости желательно применить такой МК, в который влезет прошивка и для работы по 1-Wire, и для опроса DHT-22, и для опроса Si7021, и для опроса BH1750. Естественно, не всё вместе, а в зависимости от типа датчика.

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

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

    1. Если пришла температура с DS18B20 - пихнул её в новый датчик для модуля STATE;
    2. Если пришла влажность - пихнул её в новый датчик для модуля HUMIDITY.
    3. и т. п.

    При таком раскладе можно и комбинировать - провод/беспровод. С написанием прошивки под выбранный МК могу и помочь, правда - удалённо пока.

    Други, давайте пропедалируем эту крайне интереснейшую тему ;)
     
Статус темы:
Закрыта.