РЕКЛАМА НА ФОРУМХАУС ... и потом прокладывать провода и приделывать еще считыватель RS-485, чтобы завести эти данные в систему. Это как раз вполне понятно: если, скажем, у меня везде mesh-сеть с обменом данными по MQTT - то накой черт туда корячить проводное RS-485, вместо того чтобы просто поставить рядом со счетчиком аккуратную коробочку, на ту же самую DIN-рейку, и ловить данные в сети? (такой штуки у меня, кстати, нет, а счетчики с выводами есть, и теперь думаю не сделать ли себе...) Вопрос другом, почему у автора не работает простейшая задача типа "считать аналоговое значение" или "посчитать 1+1+1+1..." Конечно, может и модуль битый уже, в ходе экспериментов спалилось в нем что-то, а может программа черезчур навороченная.
Не бывает программы, слишком сложной самой по себе. Но бывают программы, которые конкретный программист уже не может контролировать.
У меня уже порядка 20 устройств по всему участку. Все уже давно отлажено. И все косяки с чтением аналогового пина отработаны. Прерывания делал на одном устройстве, закончилось все плачевно. Разбираться не стал, сделал просто опросом. Вы как определили, что у Вас все нормально работает. Я на всех устройствах делаю контроль связи с сервером. Вот он и показывает проблемы. Причем периодически данные на сервер передаются. Это на UDP протоколе, с TCP прерывания и опрос аналогового пина не испытывал. И примерно раз в 2 недели приходится перезагружать промежуточный UDP сервер. Он начинает не просто терять принимаемые пакеты, а начинает принимать нули. С протоколом TCP такого нет.
Весь гемор уже в прошлом. А вот отладка новой платформы, это точно будет гемор. Проще взять подходящую готовую плату, которые есть в наличии, снятые с предыдущих проектов, и быстро прикрутить в имеющемуся счетчику Меркурий, используя уже готовую, отлаженную программу. Я рассматриваю вопрос замены именно на такой счетчик, но все параметры напряжения, тока уже считываются. Контроль напряжения делал одним из самых первых, он у меня на старой платформе Ардуино + ESP-01. Не лучший вариант, по WIFI не прошивается, нужно проводом подключаться. У меня практически готовые решения для изготовления печатных плат, и готовые коды.
Это известная проблема ESP8266. В принципе она решается, если делать промежуток "тишины". У Ардуино то же есть проблема. Если прикрутить к ней обычное электромагнитное реле, и в программе использовать прерывания, то срабатывание этого реле вызывает прерывание, причем только одно из двух.
Вот все аналогично. У меня своя система, работает уже лет 5. Туча устройств прикручено, технология отработана, новое устройство интегрируется без проблем, печатные платы есть практически на любую конфигурацию. Вот вообще нет желания что то переделывать. Единственное, с чем готов повозиться, это интегрировать в систему термоголовки. И то, буду делать это по шагово. Сперва установлю термоголовки со шлюзом, потом буду уже интегрировать в свою систему. Это не быстрый процесс точно, и времени практически на это нет. Первое время термоголовки будут работать в отдельной системе. Уже думал переделать устройство, которое контролирует электрическую сеть. Но старое вроде работает, все функции выполняет. Нет никакого желания с ним возиться, туча еще мест куда не добрался.
Вот и у меня давно все работает, и проблем никаких нет. Ничего "нули" не пишет, и "известная проблема" тоже неизвестна. Как и проблема с реле и ардуиной. Что я не так делаю? (с)
Ну, в принципе, провода все равно к "какой то коробочке" проводить. Либо 485й (который по любому протоколу дальше пробрасывается куда угодно), либо фотодиод считающий блинки... Но по 485му можно получить более развернутую картину и по частоте, и по току/напряжению в любой момент времени. Кстати, у меня есть электросчетчик с САN, но даже у производителя найти описание протокола невозможно - "по запросу организации реализующей проект". Да и обслуживающая организация не дает доступа к порту (он пломбируется вместе с клемами). Вот и приходится выкручиваться чтоб удаленно снять показания.
Тут могла бы быть история про программиста на Ассемблере и Windows 3.1, но это не тот форум. Если корото - иногда не надо лезть в дебри.
просто не попалась такая конфигурация. У меня были проекты на ардуино с прерываниями и реле. Проблем не замечал, хотя возможно они и были, но логика была такая, что это на результат не влияло. Проблема влезла, когда делал таймер/контроль температуры, для изготовления печатных плат. Там две кнопки (повесил их на прерывания), и реле. Работает в двух режимах - реле времени для засветки фоторезиста, и контроль температуры - контролирует температуру раствора при травлении и при лужении дорожек. И проблема вылезла. При срабатывании реле вызывалось прерывание к которой подключена кнопка стоп. Если бы к этому прерыванию была подключена кнопку пуск, то и проблема не вылезла. Начал копать в интернете, так и есть, такая проблема существует. Плата сделана, все спаяно, уложено в корпус. Естественно проще отказаться от прерываний, и работать по опросу. И с прерываниями на ESP8266, если бы не светодиод, который показывает, что происходят пропуски в получении пакетов от сервера, то же бы не обратил внимание. В принципе данные периодически передавались.
Когда все с нуля делается, то это самый оптимальный вариант. Я вот жалею, что сразу не взял такой счетчик. Теперь все параметры сети и так контролируются, заморачиваться с таким счетчиков желания нет. Но тема интересная, у китайцев есть хорошие устройства, и цена у них значительно ниже наших Меркуриев. Самый дешевый Меркурий с 485 стоит больше 7000р. На протокол для Меркурия полно документации, на сайте производителя. Они вроде позиционируют, что не скрывают от народа протокол.
С ходу, не могу вспомнить такую историю. Но с программистом, который не признавал ничего, кроме ассемблера, бодался ещё более тридцати лет назад. Так и не смог его убедить, что каждой задаче свой инструмент.
Корни этой "проблемы", на мой взгляд, достаточно очевидны. Обмотка реле это индуктивность. При коммутации которой возникают броски тока, которые дают наводку на вход с кнопкой. То есть, проблема не в esp, а в схемотехнике и (или) разводке платы. Эту проблему можно решить через правильную схемотехнику и разводку ПП (чтобы убрать или минимизировать наводки), а можно и так, как решили вы. Через опрос и (наверное) антидребезг чтобы отфильтровать эти самые наводки. Соответственно, основываясь на этом опыте, говорить, что у esp проблема с прерываниями, будет, мягко говоря, неверно.
Либо простейший древний электромеханический счетчик с импульсным выходом, к которому тоже без проблем приделать счетчик на ESP, а вот 485 порта там ну никак не предусмотрено. О чем и речь: это практически универсальное решение, вплоть до счета "блинков" фотодиодом, которые можно преобразовывать в показания и отправлять в сеть. К тому же, второй момент, о котором почему-то не задумываются: - показания по учету энергии это некие контрольные данные, которые можно использовать ну хотя бы для учета потребления электроэнергии (логично, да?). - показания по частоте внешней электросети - это что-то вроде "средней скорости ветра на Марсе" - вы никак не можете на это повлиять, и в большинстве случаев это на вас тоже не влияет, если вы - не дежурный диспетчер Горэлектросетей. Даже напряжение в сети - более важный показатель, он напрямую влияет на "нагревательную способность" электроплит, электрообогревателей или паяльника, его можно хотя бы учитывать, а вот что дает знание 49.8 или 50.2 Гц в сети - не могу придумать. Это к тому, что не все данные которые теоретически можно получить - нужно получать. Особенно если для этого надо дополнительно потрудиться. Прерывание не шайтан из медной лампы, оно вызывается электрическим импульсом в цепи контакта или в цепи питания. Если оно вызывается не вовремя - вопросы не к "известной проблеме", а к тому, кто не обеспечил защиту от помех. Реле может давать импульс при размыкании - там еще иногда ставят всякие ненужные диоды, конденсаторы какие-то, дроссели... Потому что я ее не рассказывал. Чтобы не сильно отклоняться от темы форума - аналогия из электроники: многие реально хорошие спецы по микропроцессорам, привыкшие писать для них программы - терпеть не могут "эту абдурину", потому что они слишком квалицифированы чтобы писать "digitalWrite" как школьники какие-то вместо обращения к портам на ассемблере, а при попытке обращения к портам на ассемблере почему-то перестает работать все то, что писали не они. Просто иногда нужно попроще.
Реле и прерывания, это проблема Ардуино. На форуме Ардуино проблему так и не решили. Что то там фольгой оборачивали, за пределы платы выносили. И срабатывает только одно прерывание, на второе влияние не оказывает. Что там у ESP не знаю, до этого так и не дошел, хотя в том проекте используется обычное реле. Оно стоит рядом с датчиком температуры термопары. На него влияние оказывает. При включении температуру сразу градусов на 60 ниже выдает. Но это скорее проблема с питанием, возможно опорное напряжение изменяется. Проблему разводки можно решить, если делается тиражный продукт. А здесь все проблемы вылезают когда и корпус уже готов, и плата сделана. Намного проще поменять алгоритм, чем переделывать всю конструкцию. У ESP проблемы прерывания и работоспособность WIFI.