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

Домашняя автоматика - своими силами

Тема в разделе "Умный дом", создана пользователем ВИД, 07.01.08.

Метки:
  1. Arcnet
    Регистрация:
    24.12.09
    Сообщения:
    3.117
    Благодарности:
    3.277

    Arcnet

    Живу здесь

    Arcnet

    Живу здесь

    Регистрация:
    24.12.09
    Сообщения:
    3.117
    Благодарности:
    3.277
    Адрес:
    Пермь
    Так то здесь важна не длительность импульсов, а минимальный период их поступления. Или максимальная частота.
     
  2. AVG111
    Регистрация:
    25.09.18
    Сообщения:
    2.752
    Благодарности:
    1.264

    AVG111

    Живу здесь

    AVG111

    Живу здесь

    Регистрация:
    25.09.18
    Сообщения:
    2.752
    Благодарности:
    1.264
    Адрес:
    Москва
    В теории все так. Я подключал ESP для контроля оборотов вентилятора. Контролировать все это по прерываниям, с передачей данных на WIFI не получилось. WIFI просто переставал работать. Даже при передачи информации 1 раз в секунду. Так как прерываний в сек. было достаточно много, я попробовал первые 500 мс отслеживать прерывания, потом делал запрет, паузу порядка 200 мс, и только потом прием/передача wifi. Ничего не получилось. Проще было замерить количество импульсов за эти пол секунды, чем разбираться с причиной. Причем на разных пинах, это все происходило по разному. Длительность цикла 2-3 ms, а длительность импульса от счетчика 96 ms. проще без прерываний все сделать.
     
  3. Arcnet
    Регистрация:
    24.12.09
    Сообщения:
    3.117
    Благодарности:
    3.277

    Arcnet

    Живу здесь

    Arcnet

    Живу здесь

    Регистрация:
    24.12.09
    Сообщения:
    3.117
    Благодарности:
    3.277
    Адрес:
    Пермь
    Смотрите сами, как вам проще. Разобраться с причиной, или найти обходной путь.
    Но если вы работаете в среде Arduino, то поиск причин может быть достаточно проблематичен.

    Кстати, если вы боретесь с esp8266, я бы посоветовал перейти на esp32, даже лучше на esp32-s3
     
  4. AVG111
    Регистрация:
    25.09.18
    Сообщения:
    2.752
    Благодарности:
    1.264

    AVG111

    Живу здесь

    AVG111

    Живу здесь

    Регистрация:
    25.09.18
    Сообщения:
    2.752
    Благодарности:
    1.264
    Адрес:
    Москва
    Была такая мысль перейти на esp-32. Но есть отработанная технология на wemos. Сделано множество плат. Несколько проектов пришлось переделывать, в итоге есть пара готовых плат, которые можно прямо сейчас использовать. А с esp-32 придется все это заново проходить. Если форумы почитать, то там то же не все так просто. Туча подводных камней. Временные затраты получаются больше, чем прикрутить wemos.
     
  5. Netbyka
    Регистрация:
    30.07.15
    Сообщения:
    3.916
    Благодарности:
    2.303

    Netbyka

    Живу здесь

    Netbyka

    Живу здесь

    Регистрация:
    30.07.15
    Сообщения:
    3.916
    Благодарности:
    2.303
    У вентилятора как бы оборотов больше, ESP все время была занята прерываниями. В подобных случаях нужно или аппаратный делитель ставить, или хотя бы аналоговым способом, по росту напряжения на интегрирующем конденсаторе.

    Если у вас с такой же скоростью электросчетчик будет крутиться - ну, я не знаю как это возможно.
     
  6. AVG111
    Регистрация:
    25.09.18
    Сообщения:
    2.752
    Благодарности:
    1.264

    AVG111

    Живу здесь

    AVG111

    Живу здесь

    Регистрация:
    25.09.18
    Сообщения:
    2.752
    Благодарности:
    1.264
    Адрес:
    Москва
    Я разрешал прерывания в промежутке 100 ms, потом запрещал. Обращение к WIFI было 1 раз в сек. Все равно не помогло.
    При считывании импульсов задача значительно проще. Нужно просто считать переход с высокого на низкий уровень.
     
  7. Netbyka
    Регистрация:
    30.07.15
    Сообщения:
    3.916
    Благодарности:
    2.303

    Netbyka

    Живу здесь

    Netbyka

    Живу здесь

    Регистрация:
    30.07.15
    Сообщения:
    3.916
    Благодарности:
    2.303
    Пробуйте :)]

    Проблема с вентилятором понятна, слишком много прерываний и слишком мало времени на wifi, тут такого быть не должно, но вы делайте как считаете правильным
     
  8. AVG111
    Регистрация:
    25.09.18
    Сообщения:
    2.752
    Благодарности:
    1.264

    AVG111

    Живу здесь

    AVG111

    Живу здесь

    Регистрация:
    25.09.18
    Сообщения:
    2.752
    Благодарности:
    1.264
    Адрес:
    Москва
    Сам цикл длился всего 2-3 мс. Т. е. каждые 2-3 мс. вызывались программный код обслуживающий WIFI. Скорее всего WIFI использует сам прерывания, и они действительно пересекаются с пользовательскими.
    Вентилятор действительно давал импульсы часто, но даже ограничение времени, когда разрешено прерывание не позволило решить проблему.
    Возможно, если покопаться, можно найти причину, но особого желания нет, так как в данных проектах это все можно решить и без прерывания. Понятно, что не красиво, зато надежно.
    Похожая проблема получается, если постоянно читать аналоговый порт.
     
  9. Netbyka
    Регистрация:
    30.07.15
    Сообщения:
    3.916
    Благодарности:
    2.303

    Netbyka

    Живу здесь

    Netbyka

    Живу здесь

    Регистрация:
    30.07.15
    Сообщения:
    3.916
    Благодарности:
    2.303
    У меня есть не одна железка, "постоянно читающая аналоговый порт", но таких проблем нет.
    Просто читать его надо примерно 1 раз за цикл, и циклы крутить с минимальными задержками.
    В общем, это вопрос программирования
     
  10. AVG111
    Регистрация:
    25.09.18
    Сообщения:
    2.752
    Благодарности:
    1.264

    AVG111

    Живу здесь

    AVG111

    Живу здесь

    Регистрация:
    25.09.18
    Сообщения:
    2.752
    Благодарности:
    1.264
    Адрес:
    Москва
    Так не получилось. Если считывать один раз за цикл, то WIFI перестает работать. У меня все полезное вызывается 1 раз в секунду. А сам цикл длится примерно 2-3 мс. Приходится на 100 мс делать задержку, потом производить аналоговые измерения.
    Между аналоговым считыванием, и вызовом приблуд WIFI должен быть промежуток.
     
  11. Arcnet
    Регистрация:
    24.12.09
    Сообщения:
    3.117
    Благодарности:
    3.277

    Arcnet

    Живу здесь

    Arcnet

    Живу здесь

    Регистрация:
    24.12.09
    Сообщения:
    3.117
    Благодарности:
    3.277
    Адрес:
    Пермь
    Что-то странное вы пишете. Похоже, что это особенности вашей конкретной реализации и (или) комбинации "библиотек". Возможно, умноженные на "особенности" esp8266.
    Поэтому я и предлагал посмотреть esp32-s3. Этот чип сделан уже значительно "правильнее", даже по сравнению с просто esp32. А если перейти с Ардуино на "родную" среду idf и "фирменные" библиотеки с freertos, то подобных непонятных "нюансов" должно быть значительно меньше. И вообще всё станет понятнее и "прозрачнее".
     
  12. AVG111
    Регистрация:
    25.09.18
    Сообщения:
    2.752
    Благодарности:
    1.264

    AVG111

    Живу здесь

    AVG111

    Живу здесь

    Регистрация:
    25.09.18
    Сообщения:
    2.752
    Благодарности:
    1.264
    Адрес:
    Москва
    Это особенности esp8266.
    Я использую wemos mini. под него разработаны платы, все косяки какие ножки куда можно использовать, выявлены. Размер позволяет запихнуть куда угодно.
    У меня лежат esp32, но пока руки не дошли, да и потребности нет.
    esp32-c3 интересная. Размер получается практически как у wemos mini, а возможностей больше.
     
  13. Arcnet
    Регистрация:
    24.12.09
    Сообщения:
    3.117
    Благодарности:
    3.277

    Arcnet

    Живу здесь

    Arcnet

    Живу здесь

    Регистрация:
    24.12.09
    Сообщения:
    3.117
    Благодарности:
    3.277
    Адрес:
    Пермь
    Судя по тому, какие у вас были проблемы и как вы их пытались решить, я бы не торопился утверждать, что все косяки выявлены. :|:
    Кстати, esp32-c3 и esp32-s3 существенно разные чипы. Например, esp32-c3 это RISC-V, а esp32-s3 классическая для ESP архитектура Xtensa, хотя и модернизированная.
     
  14. Netbyka
    Регистрация:
    30.07.15
    Сообщения:
    3.916
    Благодарности:
    2.303

    Netbyka

    Живу здесь

    Netbyka

    Живу здесь

    Регистрация:
    30.07.15
    Сообщения:
    3.916
    Благодарности:
    2.303
    Нет никаких проблем с esp8266)
    "У меня все работает" (с)
    Правда, я использую отдельные модули типа 12F и подобные, а не готовый Wemos, но и его использую как макетную плату - никогда никаких проблем не было.

    Такое впечатление что что-то мешает нормальной работе модуля.
    А что-нибудь простое, типа моргалки светодиодиком, работает? Без прерываний, обращения к регистрам, ассемблерных вставок и прочего?
    Потом добавить в цикл считывание порта и отправку цифры в сериал. Потом добавить ещё что-то - и найти когда все сломается.
     
  15. Прохожий1
    Регистрация:
    12.02.18
    Сообщения:
    636
    Благодарности:
    323

    Прохожий1

    Живу здесь

    Прохожий1

    Живу здесь

    Регистрация:
    12.02.18
    Сообщения:
    636
    Благодарности:
    323
    Адрес:
    Днепр
    А не проще ли взять китайский счетчик с RS-485 и снимать сколько угодно? Зачем придумывать себе гемор работает/не работает если есть готовые решения?