Подключение нескольких PZEM-004t на ESP

Решил подсократить немного затраты на обвязку вокруг измерителей сети для солнечных панелек и в главном домовом электрощите – все равно то, что сейчас подключено к инверторам, собрано “на коленке” и его еще надо оформлять в готовую конструкцию, а знания теперь более-менее позволяют использовать более дешевые (и менее обслуживаемые) компоненты.

В качестве основы прошивки послужила эта статья. В прикрепленном к той статье коде реализован только вывод данных на последовательный порт и подключение к Wifi (и добавлена куча нереализованных библиотек; код – явно заготовка), но для начала этого было достаточно. Далее уже пошли мои изменения:

  • Показания планировалось забирать удаленно, а не через последовательный порт; в коде есть подключенная библиотека HTTP Client. Мне такой вариант (дергать какой-то скрипт на внешнем сервере) был не сильно удобен, поэтому первым делом начал искать реализацию HTTP Server для esp8266. Разобраться с темой помогла эта статья. Создал отдельные странички, где plaintext’ом выводились данные с отдельных измерителей в нужном мне формате (определенном еще на этапе использования одноплатников). Плюс создал индексную страницу, где были ссылки на подстраницы + в iframe выводилось содержимое подстраниц. Еще полезные статьи: 1, 2, 3. По последней ссылке есть пример отдачи png-картинки по запросу, об этом позже.
  • Для удобства использования контроллеров в разных местах реализовал подключение к Wifi через WifiMulti. Контроллер теперь мог перебирать перечисленные сети в поисках той, к которой сможет подключиться. Помогла эта статья.
  • Так как в местах размещения микроконтроллеров может быть полезно мониторить температуру – добавил возможность работы с DS18b20. Реализация – полная копия кода из этой статьи, вариант с несколькими датчиками, лишь убрал вывод температуры в F, плюс в цикле скана датчиков добавил функцию снижения разрешения до 10 бит для ускорения замера. Под термодатчики сделана отдельная страница на веб-сервере, которая также выводится и на индексной странице.
  • Как финальное (на данный момент) изменение – реализовал обновление прошивки по воздуху, так как в дальнейшем планируется, во-первых, использование “голых” модулей ESP12E, без удобных инструментов для прошивки, а во-вторых, контроллеры будут стоять в закрытых корпусах (некоторые – в щитке) и подобраться к ним может быть проблематично. Использованные статьи для изучения OTA перечислил в этом посте.

Пара дополнительных моментов:

  • Добавил мигание светодиодом, размещенным на модуле, в процессе подключения к wifi. Добавить особо нечего, кроме того, что это занимает вывод D4.
  • Вариант подключения, описанный в первоначальной статье, неработоспособен, так как подключенный на D8 PZEM-004t “глушит” загрузку с внутренней флешки. Тут помогла эта статья – табличка в разделе “Best pins to use”. В итоге перевесил 3-й измеритель на D0. Итого – D0-D2, D5-D7 под 3 измерителя, D3 под DS18B20, D4 под светодиод; D8 остается свободным. При желании и необходимости подключить больше измерителей, можно объединить линию TX (RX для измерителя), тогда запрос будет даваться на все измерители сразу, а ответ слушаться только от конкретного. В таком случае каждый новый измеритель будет обходиться ценой только одной дополнительной линии. По схеме, описанной выше, можно будет подключить уже 5 измерителей. Если избавиться от вывода сообщений в последовательный порт и задействовать его, то можно подключить 6 измерителей. Ну и если при загрузке соблюдать нужный уровень на D8 и только потом его использовать – выходит уже 7 PZEM’ов.

PZEM_nodemcu.ino

2 мысли о “Подключение нескольких PZEM-004t на ESP”

  1. Уведомление: Solar Fields | rain's blog

Добавить комментарий