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

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

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

Статус темы:
Закрыта.
  1. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    ОК.
    Завтра отпишусь.
     
  2. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957

    promavto

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

    promavto

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

    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957
    Адрес:
    г. Москва, Зеленоград.
    В таком случае продолжим. Пишу ночью, поэтому если слог будет выстроен неточно, прошу понять правильно. Днем не дадут сосредоточиться.

    Аппаратная часть.

    Первое на что нужно обратить внимание - это питание. Китайские блоки питания смело пишут 2 ампера и более, но с трудом вытягивают нормально 800 мА. Это первая засада. В момент передачи SIM800C (в дальнейшем модем) потребляет до 2 ампер в импульсе. Можете представить что твориться на цепи питания. Плюс еще высокочастотные наводки. При этом включение и отключение модема производится положительным импульсом на входе PWRKEY. Достаточно глубокого проседания и сформируется импульс отключения модема. Вы и знать не будете, а модем уже отключен.
    Поэтому на цепь питания нужно подключить конденсатор не менее 2000 мкф. Подключение ионисторов или аккумуляторов почему то оказалось неэффективным. Но подключать нужно не непосредственно на вывода модема, а перед ключом (FDN340 или аналог). Иначе модем отключиться, будет потреблять малый ток, а конденсатор еще будет сохранять питание на выводах модема. Поэтому быстрая перезагрузка не получиться, нужно ждать пока разрядиться конденсатор. Для нормальной перезагрузки необходимо полностью обесточить модем. Иначе подавая импульс включения на PWRKEY Вы будете думать что включаете, а фактически выключаете модем. Я много раз (не очень но было по первой) накалывался на этом. Потом не мог понять почему нет ответа от модема.

    Что бы так не получилось, есть возможность контролировать процесс включения. Для этого задействуем (контролируем) вывод STATUS. Он означает, что модем включен. Дима я знаю, что ты не любишь "железо", но извини, нет смысла ждать ответа от модема если он отключен.

    Поэтому включение модема происходит следующим образом.
    1) отключаем питание транзистором FDN340 и ждем некоторое время (2 сек) на выходе STATUS появление "0". Не появилось - уходим в ошибку.
    2) Включаем FDN340 и ждем некоторое время (1500 мс) для установки питания.
    3) Даем импульс (1200) на вход PWRKEY и ждем 3 сек. на выходе STATUS появление "1". Не появилось - уходим в ошибку. По инструкции импульс может быть и короче (300), но нам не жалко.

    Теперь мы точно знаем что модем включился, а не отключился. Можно и в дальнейшем контролировать STATUS но не обязательно. Достаточно контролировать его только в процессе старта, включения. Дальнейшая работа контролируется другим сигналом. Перехожу на часть вторую.
     
    Последнее редактирование: 21.04.18
  3. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957

    promavto

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

    promavto

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

    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957
    Адрес:
    г. Москва, Зеленоград.
    Не совсем так.
    Часть вторая.

    Что такое выход NETLIGHT. Это очень полезный выход. А в сочетании с прерыванием, просто неоценим.

    Что он сообщает. На этом выходе формируются три вида импульсов. Точные значения длительностей укажу позже, нужно искать. Укажу в каких интервалах я их контролирую.
    1) 855-870мс. - поиск базовой станции. Импульсы средней длины.
    2) 3055-3070 - базовая станция найдена, подключились. Длинные (3сек. период) моргания.
    3) 350-370 - быстрые, короткие. - мы подключились в интернет.

    Применяя прерывание, мы всегда знаем на какой стадии мы находимся.
    Нет смысла подавать команды подключения к интернету если нет длинных импульсов.
    И срочно необходимо вызывать процедуру подключения к интернету если мы в нем были и он вдруг пропал. Но здесь базовая станция может подло обмануть. Импульсы на модеме могут быть короткими, типа мы в интернете, а на базовой интернет прервали. Это бывает часто.
    Поэтому пинг на ya. ru (или другой, но яндекс стабильно отвечает) обязателен. Можно пинговать и пару сайтов для уверенности.

    В любом случае мы (контроллер теплицы) мгновенно узнаем, что связь не в порядке и требуется переподключение.

    Далее должны следовать программные процедуры. Здесь мне нужно некоторое время для подготовки, просмотр писем от службы поддержки SIM800C. Для подключения и особенно отключения от интернета нужно обязательно выполнить определенную последовательность.
    Команды в инструкциях описаны, а вот очередность - не везде прописана. Служба поддержки их описала.

    Если нужно продолжение сообщите. Может Вам сей метод не подходит. Но у себя я постараюсь его применить. Эх. времени бы побольше.
     
    Последнее редактирование: 21.04.18
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

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

    В дальнейшем допишем и настраиваемый контроль выхода STATUS - не вопрос. Ты главное сохрани эти инструкции в отдельный документ, и предъявишь их мне, когда дозреем до полного допиливания ;)

    Сейчас, как видишь, надо полностью долизать GPRS, чтобы ни одна ссабака комару нос не подточила :)]:aga:
     
  5. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957

    promavto

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

    promavto

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

    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957
    Адрес:
    г. Москва, Зеленоград.
    Оба этих сигнала я предусмотрительно подал на микроконтроллер. Так что аппаратно переделывать ничего не нужно. ;)
     
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Саш, они и не подаются. Потому как я проверяю регистрацию AT-командами ;) Неужели ты думаешь, что я этого не учёл?
    В этом случае в порт упадёт +PDP: DEACT, что уже тоже учитывается в прошивке ;)

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

    Уже введено в прошивку, но пока только для того, чтобы не дать сессии протухать. В дальнейшем - можно анализировать ответ от пинга, допилим, если будет потребность. Как видишь - тут статус NETLIGHT тоже немного курит в стороне, по сравнению с программной частью. Да и светодиодом NETLIGHT как думаешь, что управляет? Правильно - китайская прошивка от SIMCOM, которая зашита в модуль. Хочется, чтобы ты доверял мне хотя бы наполовину так же, как китайцам, пусть я этого и не заслужил ;)

    Это я помню. Просто пока считаю, что с сигналом NETLIGHT - это просто баловство, судя по тому, как он себя показывает на деле: сессия GPRS протухла, а оно моргает себе почём зря. Без дополнительных плясок всё равно никак, а если есть дополнительные пляски - то зачем NETLIGHT? Пусть себе моргает, как ему хочется, имхо. Вот с выводом STATUS - вопрос поинтересней, но и с этим пока не спешу - надо до конца допилить программную часть. Скажем, с тем же пингом - тоже вопросы: не пропинговался сайт - что это: сайт лежит? Или интернета нет? Или деньги на счету кончились (у мну не пингуется ya. ru сейчас, выдаёт таймауты, потому как денег 0 на симке; при этом коннект к сайту проходит, просто вместо содержимого gardenboss. ru выдаётся 302 Moved на страницу оплаты счёта).

    Как видишь, в зависимости от - нельзя сделать однозначный вывод, что инет пропал. Также, как нельзя сделать однозначный вывод по статусу NETLIGHT, что на данный текущий момент сессия GPRS активна. Единственное, что мне сейчас ОДНОЗНАЧНО ясно: то, что SIM800 при протухшей сессии всё равно выдаёт CONNECT OK при старте коннекта к сайту, но при этом висит до таймаута в секции отправления данных. Это - точно не моя вина, зуб даю. Возможно, в новых прошивках от SIMCOM что-то пофиксили - там прошивки тоже обновляются, емнип.

    Вывод: 100%-ного способа определить, есть интернет или нет - не существует. Мне главное - сделать так, чтобы модем автоматом пересбрасывался, если сессия GPRS протухла, считаю это главной задачей сейчас. @olegmak3 пришлёт логи - посмотрим, помогли ли крайние дополнения для обеспечения более предсказуемой работы.

    Сейчас уже и так - написано так, что всё на стрёме: чуть что - сразу модем в перезагруз, ибо нефик. Всё делается как раз для повышения устойчивости к разным жизненным ситуациям. Но, как ты понимаешь, для полноценного тестирования надо овердофига человекочасов и разных данных окружения, ибо доверять тестированию только на моём окружении - значит не добиться успеха. Поэтому и призываю - тестируйте, логи выкладывайте, связь и провайдеры у всех разные, а нам надо добиться такой работы SIM800, чтобы аж уууух ;)
     
  7. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Готов подумать над этой зависимостью, но мне надо знать все вводные: что именно менялось (правила руления окнами по температуре или уставки температур открытия/закрытия?), когда происходила запись новых правил - в момент закрытия окон или до начала закрытия окон, "начали закрываться пару тройку секунд, затем остановились" - остановились потому, что отработали, или как? "но статус окон не поменялся" - какой статус? Статус просто застыл, как есть, или поменялся через 10-15 секунд, скажем? В дальнейшем - правила работали штатно, фрамуги реагировали по правилам, или нет?

    В общем, если ты распишешь поподробней - попробую понять, в чём дело, и поправить, если пойму. Надо понять - косяк ли это прошивки или просто фича-недоработка в вебморде, например.

    Если у тебя получится ещё раз воспроизвести такое же поведение - было бы чудесно, если бы ты скинул сюда полное описание последовательности действий, которое должно привести к такому результату, с указанием твоих правил и прочей шелухи, типа скриншотов ;)
     
  8. andy117
    Регистрация:
    18.01.18
    Сообщения:
    34
    Благодарности:
    14

    andy117

    Участник

    andy117

    Участник

    Регистрация:
    18.01.18
    Сообщения:
    34
    Благодарности:
    14
    Да
    Нет, у меня Мега и ESP в одном флаконе (типа robotdyn).

    При случае попробую.
    Кстати, при подключении через USB выводится надпись о готовности и текушее время контроллера. Как будто произошел перезапуск и выполнилась setup(). Так и должно быть?
     
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Плохо. Пин управления питанием ESP нужен, в прошивке настоятельно рекомендуется его использовать, в комментариях это написано.

    Да, так и должно быть. При подключении к USB готовые платы пересбрасываются, и действительно отрабатывает setup.
     
  10. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957

    promavto

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

    promavto

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

    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957
    Адрес:
    г. Москва, Зеленоград.
    Небольшие уточнения. Сторожевой таймер на NE555. На выходе вместо резистора (линия на сброс) необходимо установить диод. Конденсатор заряда в пределах 150-200 мкф. В программе нужно увеличить импульс сброса до 150 мс. Сигнал сброса на входе NE555 должен быть инверсный. То есть в нормальном состоянии высокий уровень, а сброс нулевым. Я у себя в программе его изменил. Дима, может имеет смысл иметь возможность устанавливать не только длительность, но и инверсию. Как на других управляющих сигналах (фрамуги, полив).
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Ок, добавлю в настройки уровни для ватчдога, не вопрос. Как добавлю - отпишусь.
     
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

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

    Ещё один хвостик в настройках закрыли ;)

    @promavto - Саш, я только не поменял длительность импульса, плата под Due у мну под прежние настройки ведь, не стал корёжить пока. Как устаканится с новой версией платы - мы с тобой промониторим актуальность настроек под новую версию ;)
     
  13. Old-Admiral
    Регистрация:
    30.03.16
    Сообщения:
    191
    Благодарности:
    153

    Old-Admiral

    Живу здесь

    Old-Admiral

    Живу здесь

    Регистрация:
    30.03.16
    Сообщения:
    191
    Благодарности:
    153
    Спешу сообщить уважаемым камрадам, что битва Роскомнадзора с Телеграмом дошла и до пользователей Thingspeak'a.
    Мой контроллер всю зиму молотит из квартиры, дабы не разучился работать и можно оперативно вносить изменения.
    Так вот, 20го апреля обнаружил, что данные по ESP8266 уходят в сеть, а посмотреть на компе-планшете-телефоне я не могу. Оператор 2Ком. Через мобильный интернет всё норм. Полагаю, что пока.
    Трассировка показала, что до Thingspeak'a идём ч. з. Amazon, а его то и заблокировал РКН!
    Сколько продержатся мобильные операторы неизвестно. Но ещё раз спасибо Диме, что о прошлом годе допиливал возможность отправки данных по GPRS.
    Планирую подать обращение в РКН. Походу сервису IoT в России не быть :-(
     
  14. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957

    promavto

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

    promavto

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

    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957
    Адрес:
    г. Москва, Зеленоград.
    У меня на работе заблокирован https://forum.arduino.cc/. Сам сайт открывается. Дома другой провайдер, открывается все.
    Дима, длительность импульса настраивается нормально, переделывать не нужно. Можно только в следующих релизах поменять 20 на 200. А можно не менять, сами установят нужную. :)
     
  15. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957

    promavto

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

    promavto

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

    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957
    Адрес:
    г. Москва, Зеленоград.
    Дима, вернусь к теме концевиков на фрамугах. Не помню чем закончилась история, было много разных предложений. На моих контроллерах (старых и новых) установлены дополнительные микросхемы MCP23S17/MCP23017.
    Адрес 2 резерв, свободная. Адрес 3 на концевики фрамуги открыты. Адрес 4 на концевики фрамуги закрыты. Может стоить их задействовать в программе. Резервный (адр. 2) применять для датчиков наполнения баков с водой, концевиков на дверях, извещения супруги, что пора пропалывать и т. д.

    А адреса 3,4 задействовать по прямому назначению. Механизм настроек как полива и фрамуг.
    Что думаешь?
     
Статус темы:
Закрыта.