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

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

    Если с него не приходят данные вообще - да, система не покажет, что есть такой датчик, если он единственный беспроводной данного типа. Если данные с него приходили, но перестали - должна нормально отрабатываться такая ситуация, и по прошествии определённого времени показания датчика должны сбрасываться на "<нет данных>". Если первым прочухался датчик с индексом 3, то для индекса 2 должно показываться "<нет данных>", вроде всё очевидно (если настроен адрес 3, то считаем, что и адрес 2 тоже настроен, т. е. адреса должны идти последовательно).

    Настройка адресов беспроводных датчиков - на совести юзера, как обычно :)

    Как вам такой вариант?
     
  2. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    В общем, надо пересматривать архитектуру опроса датчиков. Сейчас - это делает каждый модуль сам, имея прописанные датчики: их количество, тип и пр. Это в корне неправильно, и вот почему:

    1. Данные датчика могут придти из разных мест;
    2. Кол-во датчиков может меняться в зависимости от внешних условий.

    Исходя их этого максимум, что должен делать модуль - это попросить прописать для него столько-то предопределённых датчиков, указав их тип - проводные или беспроводные. А диспетчер показаний с датчиков (новая абстракция) - должен уметь разбираться в типах датчиков, обновлять проводные, и корректно работать с беспроводными. На выходе из функции обновления диспетчера датчиков каждый модуль должен иметь актуальные показания датчиков, и ему должно быть всё равно, откуда эти данные получены.

    Пока продумываю, но уже ясно, что выносить логику опроса датчиков из модулей - надо.
     
  3. 2mike
    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415

    2mike

    Живу здесь

    2mike

    Живу здесь

    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415
    Адрес:
    Россия
    С учетом того что датчики имеют как правило адрес зашитый внутри, то все эти джамперы выбора адреса на плате будут ногами микроконтроллера (или гемор с дополнительными микрухами. регистрами). т. е. мк опрашивает, потом считывает джампер, присваивает и записывается себе в еепром. целое дело...
    поэтому наверное все таки надо жестко расписывать пины на хосте, т. е. сразу зашивать соответствие датчика и его логическую нумерацию. для выносов опять же просто добавляем префикс.
    тогда получается что пресловутый пин Х это температура У и т. д. всегда и при любых ремонтных заменах.
    - решаем кучу головняка, а если прикрутил датчик не туда то сам себе буратина.
    З. Ы, кстати как альтернатива регистрам НС595 есть mcp23017 это 16 портовый расширитель по i2c.
     
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

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

    Вопрос: как? Только указанием его индекса прямо на радиодатчике. Опять же, очень желательно - без перекомпиляции прошивки самого радиодатчика, иначе это будет не удобство, а сплошной попадос.

    Или я чего не понимаю? Заметьте, я готов к жёсткой регистрации датчиков в прошивке на этапе компиляции, пусть будет поставка типа "Два проводных датчика DS18B20 и до четырёх радиодатчиков DS18B20", пусть так. Но если в случае с проводными адрес датчика - это номер пина, откуда мы читаем, то в случае с беспроводными - такого адреса по умолчанию нет, он должен быть представлен на беспроводном модуле, чтобы мега поняла, что в системе появился беспроводной датчик температуры с индексом 2 и передал свои показания.

    Может, я реально чего недодупляю?
     
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Это я к чему? Как-нибудь можно подобное организовать железно? Типа - впаял какую-нибудь деталюху и получил радиодатчик с адресом 5, и этот адрес будет гордо выбит на боку корпуса датчика?

    Это так, для общего наброса ;) Я бы, конечно, предпочёл что-то выбираемое переключателями на корпусе датчика - так сильно юзабельней.
     
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
  7. 2mike
    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415

    2mike

    Живу здесь

    2mike

    Живу здесь

    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415
    Адрес:
    Россия
    Скорее всего так и есть, точнее уже проработаны почти все вопросы чтобы все функционировало как хочется.
    Почему же нет, просто его адрес будет типа №выноса_№пина, ну а прошивка выносного модуля будет "ждать" на этом выводе только этот тип датчика и никакой другой, вот буквально и всё :)
    З. Ы, а вопрос функционирования того же nRF24 в сети топологии звезда (один ко многим) подробно разжеван в его даташите.
     
  8. 2mike
    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415

    2mike

    Живу здесь

    2mike

    Живу здесь

    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415
    Адрес:
    Россия
    Давайте плииз мухи отдельно от котлет.
    если мы используем радиоканал только для передачи данных это одно, а если мы начинаем прикручивать туда что то из периферии (датчики) то это чуть другая история.
     
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Кситаловский беспроводной датчик на DS18B20 стоит 1870 рублей :ogo::ogo::ogo:
     
  10. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Мы планируем использовать радиоканал для получения информации с датчиков: мега слушает эфир и - всё.
    Честно? Ничего не понял про "№выноса_№пина". Очень прошу, объясните по простому, как сделать так, как я вижу (считаем, что я тупая домохозяйка):

    1. В прошивке для меги на этапе компиляции указали, что для модуля STATE будет 4 беспроводных датчика;

    2. Взяли беспроводной датчик в руки, включили - его данные появились в меге;

    3. Сломали этот датчик, взяли новый, включили - данные нового появились _на_том_же_ индексе датчика, что был у старого.

    КАК? Без перекомпиляции прошивки и на меге, и на датчике беспроводном? Как сделать так, чтобы замена беспроводных датчиков стала такой же прозрачной, как сейчас, в случае с проводными - ведь вам не надо менять прошивку, чтобы поменять один датчик DS18B20, который вдруг перестал чего-то там показывать?

    Просто в случае с проводным - есть пин, с которого мы _однозначно_ читаем, и однозначно же интерпретируем - есть этот датчик на линии или нет. В случае беспроводного - нет никакого пина, ничего - есть только приёмник на меге, который слушает эфир, и должен понимать, что переданные ему по радио данные температуры - это показания с датчика DS18B20, при этом индекс этого датчика - 23, например? Т. е. индекс, в нашем случае - это такой виртуальный пин, если хотите.

    Получается, что каждый беспроводной датчик должен уметь настраиваться на определённый индекс. БЕЗ перекомпилирования прошивки, иначе - теряется всякий смысл вообще: чтобы поменять датчик, надо сплясать с бубном, зачем?
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
  12. 2mike
    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415

    2mike

    Живу здесь

    2mike

    Живу здесь

    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415
    Адрес:
    Россия
    Датчик который будет у нас беспроводным, мы ж его не к RF модулю подключать будем, будет там стоять своя мега (ясен пень помельче) куда он и будет подключаться и обрабатываться.
    И точно так же как на хосте будет в прошивке мелкой меги выноса зашито - что к определенному пину подключается определенный тип датчика и получает он строго определенное логическое имя.
    а чтобы хост их между собой не путал, ему при передаче через RF канал будет добавляться №выноса.
    1. почему собственно мега - когда есть решения совать датчик к RF модулю.
    Ну а собственно что мне с того что я буду знать температуру в теплице за 100м от своего дивана ? все равно дергаться идти рулить форточками/вентиляторами/нагревателями и т. д. Да еще платить 20х цен просто за датчик - руки как бэ не из жо растут, и с головой не ссорился :))
    2. почему не attiny - разницы в цене просто нет.
    На меге просто делается полноценный но урезанный контроллер (скорее всего только в экране, да и то SPI пойдет только так). пинов хватит :))
    З. Ы, кстати в выносном датчике стоит что то 20ногое с затертым названием, которое его и отрабатывает.
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

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

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

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

    Нужен физически выбираемый адрес датчика одного типа, кмк. Разумными пределами такого выбора кажутся параметры от 0 до 9, т. е. - максимум 10 беспроводных датчиков одного типа.

    Или вы предлагаете при подключении нового беспроводного датчика перепрошивать ему прошивку, да ещё и на главной меге прошивку перезаливать?

    Заранее прошу прощения, если что-то не понимаю. Ключевые места, важные для обсуждения, выделил.
     
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    1. Беспроводной датчик - законченное устройство, передающее по радиоэфиру показания строго определённого типа (например, температуры с DS18B20);

    2. Беспроводных датчиков одного типа в системе может быть более единицы;

    3. Каждый беспроводной датчик должен иметь уникальный индекс на главном контроллере;

    4. Уникальный индекс должен настраиваться на беспроводном датчике без изменения его прошивки;

    5. Главный контроллер получает от беспроводного датчика его индекс, наряду с данными.

    Прошу представить, что у нас есть пять датчиков влажности почвы, которые мы понатыкали по грядкам. При этом в прошивке главной меги просто указано - бро, у меня будет 5 беспроводных датчиков влажности почвы, ты, эта - имей в виду, ок? Без индексов указано, без каких-то специфических адресов - просто тупо - 5 датчиков беспроводных, и всё.

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

    Как ещё проще объяснить - я не знаю.
     
  15. Snark
    Регистрация:
    17.10.11
    Сообщения:
    366
    Благодарности:
    424

    Snark

    Живу здесь

    Snark

    Живу здесь

    Регистрация:
    17.10.11
    Сообщения:
    366
    Благодарности:
    424
    Адрес:
    Лобня
    Ну какие перемычки!
    Договорились же - на датчике иметь 1-wire, для работы без rf и для конфигурирования. Сломался датчик, купили новый, воткнули в мегу на определенный пин в одиночестве, и в конфигураторе сказали ему - "твой номер 9, а зовут тебя "в лопухах возле колодца", после чего отключили от меги, вставили батарейку и зарыли в лопухи.
     
Статус темы:
Закрыта.