РЕКЛАМА НА ФОРУМХАУС Какая задержка? Получается так. Между чтением аналогового пина и работой с wifi нужна задержка. Оператор delay вставляет в программный код вызов процедур работы с wifi, и после loop они так же вызываются. Между этими вызовами есть задержка, и аналоговый пин сторонними процедурами не используется. Даже если один вызов "деградирует", то второй гарантированно выполняется. Надо будет ставить delay (1) в начале loop и в конце. Спасибо за эксперимент.
Как правило, в инсталляциях оно так или иначе где-то будет, шина универсальная. Разные счетчики опрашиваются по RS-485, датчики CO2, модули реле и т. д. А 1-wire очень специфический и мертворожденный стандарт, сейчас там разве что термометры и остались. Для каких-то частных случаев, типа длинная труба на производстве - наверное, 1-wire уместно, но для домашней автоматизации, конечно удобнее будет RS-485. Да и сложностей никаких - так же тянется витая пара по комнатам и сводится в слаботочный щит, только в щите оно не звездой как ethernet включается, а собирается в последовательную шину.
Для разных задач разные инструменты. Конечно, если у вас уже используется где-то 485 - логично использовать ее же и для чего-то другого. 1wire удобно использовать именно для навешивания кучи термометров, когда можно пустить кабель с ними "вдоль трубы" или "по периметру здания" - только кабель и микросхемы, как гирлянду. Тут как раз преимущество в том что не требуются дополнительные адаптеры датчиков к шине данных. В других случаях оно и не надо. И обратное: если вам нужна как раз подобная "гирлянда" термометров, то делать ее на основе шины 485, к которой подключать адаптеры, к которым к каждому подключать одну маленькую микросхему - слишком расточительно, и говорит больше о том, что интегратор не очень понимает в технологии, но зато хорошо понимает в стоимости поставленного заказчику оборудования и своих услуг по его установке. Сколько там писали, 7 т. р. за одно устройство?
К вопросу о подключении гирлянды 1-wire датчиков через готовое устройство. Где-то у меня лежит вот такой девайс (DS9490): Правда, насчет программной поддержки ничего не скажу. Когда-то пробовал запустить через стандартную софтину. Вроде работало.
Да, там несколько софтин есть. Тоже такой был. Единственный недостаток - требует более-менее полноценного компьютера, с USB. С гирляндой метров на 20 точно работало
К сожалению у wb изделие только для двух устройств, причём каждое должно быть подключено отдельно. 1-wire шина у меня классическая, витая пара, на ней гирлянда ds18b20. Метров 50 может. Все работает как положено. Просто новое оборудование не понимает 1-wire.
Еще, как вариант. Компактная коробочка сразу с датчиком и Модбасом: Есть разные варианты датчиков Или вот такой трехголовый Змей Горыныч (бывают одно и двухканальные):
В контроллере у них тоже есть порты 1-wire и туда можно гирляндой подключать, но много устройств на одной шине не рекомендуют. 50 метров может быть и заведется, но не факт что будет стабильно работать.
Приделал, в тестовом варианте. На базе все той же Wemos с отправкой по UDP. В счетчике внутри стоит штатная оптопара, ее подключаю ко входу транзисторного ключа. Вход ESP принудительно притянут к "земле" резистором, ключ подключает его к питанию 3.3В. Прерывание типа RISING, срабатывает при фронте импульса. Есть нюанс: при срабатывании идут помехи и наводки, с ними можно бороться аппаратно, но мне лень, поэтому в самом прерывании стоит ограничение: увеличивать счетчик только раз в 0.3 секунды. Этого достаточно чтобы срабатывало 1 раз на 1 вспышку, максимальная считаемая мощность при этом 12кВтч (3600 сек / 0.3 / 1000). Работает.
Вот насчет помех, очень интересно. А попробуйте в цикле считывать состояние пина, будут там помехи? У меня с счетчике не оптопара, а по всей видимости просто открытый коллектор. С прерываниями не пробовал, а при считывании в цикле, помех нет. У меня как раз такая же проблема возникала при чтении оборотов вентилятора. Там то же стоит оптопара на выходе тахометра.
Я бы, наверное, сделал так: Подтяжку входа резистором к плюсу питания. Ключ между входом и землей. Параллельно ключу емкость. Чтобы постоянная времени полученной RC цепочки гарантированно превышала время "дребезга". Но была с запасом меньше периода поступления "полезных" импульсов. Тогда первый импульс разряжает емкость через ключ, и пока конденсатор обратно не зарядится, уровень на входе не поднимется. Прерывание по спаду уровня на входе.
Нашел статью, то же человек столкнулся с дребезгом при прерываниях с использованием оптопары https://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/kak-ustranit-drebezg-na-preryvanii
Там не дребезг, там пролезает наводка 50гц, когда оптопара приоткрывает транзистор - отрицательные полуволны его похоже закрывают. Надо будет аналоговым осциллографом точнее глянуть. При опросе такого не будет заметно, потому что опрос в моменте, а потом цикл дальше уходит. Другое дело что если цикл быстрый можно несколько раз один и тот же импульс посчитать.
Про "дребезг" это условное название. Думаю, что RC цепочка бы помогла. Но можно и программно заморочиться. Не так давно делал точную синхронизацию RTC часов по сигналам PPS от GPS модуля. GPS висел на проводах, фронты импульсов ESP32 ловила аппаратно. Проблем с ложными срабатываниями не было, точность фиксации фронтов получилась порядка десятков наносекунд.
Если коротко - там помеха микросекундными импульсами 50гц, полезный сигнал такой же длительности, только немного больше по амплитуде, конденсатор по вашей схеме позволяет увеличить его длительность, но требуется либо программная обработка либо увеличение напряжения на оптроне и делитель напряжения на входе. Попробую варианты, схему выложу, вдруг кому надо.