• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Подключение esp8266 к счетчику электричества

vad7

Active member
Данные (импульсы) снимаются со счетчика электроэнергии посредством подключения либо импульсному выходу или на светодиод счетчика навешивается фототранзистор.
Данные отправляются на облачный сервер и записываются во FRAM память, для защиты от пропадания питания.
FRAM память можно использовать или I2C или SPI.
Если SPI, то используется overlap - память припаивается поверх основного флеша на модуле esp.
Отображение информации, графики - через web.

Количество считанных импульсов сохраняется в энергонезависимою FRAM память.
В ней также сохраняется кольцевой лог потребленной энергии за каждую минуту. Минуты с нулевыми значениями импульсов "архивируются", чтобы больше данных влезло.

Если FRAM - I2C, то программный флеш работает на частоте 80 Mhz, а если SPI, то на 40 Mhz. Это связано с режимом SPI overlap.
Особого замедления отображения веб страниц я не заметил.

У esp8266 есть две шины SPI - которые называются SPI и HSPI.
SPI используется процессором для доступа к флешу с прошивкой, HSPI может использоваться для других устройств.
Встроенный SPI буфер у esp8266 - 64 байта.
В режиме SPI overlap возможен доступ по одним и тем же линиям (MOSI,MISO,CLK) к трем устройствам, которые выбираются через CS0, CS1, CS2.
CS0 - это программная флеш.

Команда включения режима SPI overlap:
Код:
SET_PERI_REG_MASK(HOST_INF_SEL, PERI_IO_CSPI_OVERLAP); // HOST_INF_SEL = 0x3ff00028
Арбитр HSPI шины можно настроить волшебными командами так, чтобы он сам решал какое устройство в данный момент использовать и назначить программному флешу наивысший приоритет, чтобы работало кеширование кода (ICACHE).
Код:
SET_PERI_REG_MASK(SPI_EXT3(SPI),0x1);
SET_PERI_REG_MASK(SPI_EXT3(HSPI),0x3);
Вот эти команды включают для HSPI только линию CS2:
Код:
CLEAR_PERI_REG_MASK(SPI_PIN(HSPI), SPI_CS2_DIS);
SET_PERI_REG_MASK(SPI_PIN(HSPI), SPI_CS0_DIS | SPI_CS1_DIS);
В режиме overlap есть ограничения по частоте SPI - если программная флеш работает на частоте SPI равной 80 Mhz, то и другие SPI устройства должны работать на той же частоте.
Либо нужно программную SPI установить в 40 Mhz, тогда можно будет использовать свои устройства на 40 Mhz и ниже.


Исходник: GitHub - vad7/PowerMeter: Esp8266 Power meter with webserver

screen1.jpg

screen2.jpg

PowerMeter-SPI.jpg
 
Последнее редактирование:

alexpika

New member
Очень нужная вещь!
а коротко для чайников: куда к счетчику подключается и какими проводами. Можно с картинкой?
и питание как берёт?
 

vad7

Active member
Схема, которая сверху - фототранзистор прикладывается к светодиоду счетчика.
Питание - любой БП выдающий 3.3V и ток не ниже 0.5А.
Я использую, например, такой TSP 03 заменить HLK PM03 AC DC 220 В до 3.3 В Шаг Вниз Бэк Модуль Питания Интеллектуальные Бытовые Переключатель Конвертер купить в магазине GREAT WALL Electronics Co., Ltd. на AliExpress

Если доступны контакты счетчика (не опечатан еще) - то фототранзистор убирается, а импульсный выход [+] к GPIO3, [-] на землю.

Щас вот начал писать код для подключения к счетчикам Меркурий 230, 231 через IrDa интерфейс - можно больше инфы получить.
 
Последнее редактирование:
  • Like
Реакции: edgi

alexpika

New member
и взято с оригинала : Мелкая придирка: ты kWt и kWt*h не попутал?
 

edgi

Member
Здравствуйте, спасибо что начали эту тему. Расскажите как дела у Вас обстоят со счетчиками Меркурий 230, 231 через IrDa? Сам изучаю эту тему хочу на счетчик поставить и снимать показатели удаленно, а то как то накладно за город ездить ради показаний счетчика.
 

grafalex

New member
Здравствуйте. Тоже интересуюсь установкой ЕСП к счетчику. Хочу поизучать Ваш проект.
Но в репозитории столько всего навалено.... Где именно нужно смотреть на часть снятия показаний по моргулькам?
 

Slava_T

New member
Здравствуйте, спасибо что начали эту тему. Расскажите как дела у Вас обстоят со счетчиками Меркурий 230, 231 через IrDa? Сам изучаю эту тему хочу на счетчик поставить и снимать показатели удаленно, а то как то накладно за город ездить ради показаний счетчика.
Добрый день!

до IRDA пока не добрался...

сделал считывание по RS-485 счётчика Меркурий 230...
сейчас захотел сделать переход WiFi-RS485...

для удалённого считывания можно поставить на счётчик переходник RS-485-GSM например IRZ и 2-й модуль к компьютеру дома, и также нужна соответствующая симка с CSD-каналом...
 

edgi

Member
Добрый день!

до IRDA пока не добрался...

сделал считывание по RS-485 счётчика Меркурий 230...
сейчас захотел сделать переход WiFi-RS485...

для удалённого считывания можно поставить на счётчик переходник RS-485-GSM например IRZ и 2-й модуль к компьютеру дома, и также нужна соответствующая симка с CSD-каналом...
Дело в том что порт на счетчике уже запечатан пломбой. Остался светодиод и irda. По этому заинтересовался вашему сообщению по изучению этой технологии считывания.
 

Urbas81

Member
Если вместо FRAM через overlap поставить SD карту, которая сейчас работает на HSPI, может такая связка быть работоспособной?
 

Alex152

New member
@vad7, Добрый день! Очень актуальная для меня тема. Осваиваю ESP8266 поэтапно и хочу повторить Ваш проект. Интересует реализация с I2C FRAM-памятью, счет импульсов предполагается производить подключением к импульсному выходу счетчика. Программирование знаю на уровне asm для PIC, в WEB-программировании познаний практически нет, так что прошу не судить строго :)
Первый вопрос - какие файлы из репозитория надо залить, чтобы ESP-01 ожила и появился WEB-интерфейс? Чем и как шить - знаю :)
 

Alex152

New member
какие файлы из репозитория надо залить, чтобы ESP-01 ожила и появился WEB-интерфейс?
Сам спросил, сам отвечаю :) :
Залил все bin из readme.txt кроме тех, в названии которых SPI (или их тоже надо было?).
Появилась точка доступа, подключился, в браузере зашел в web, посмотрел менюшки, некоторые просят пароль\логин (какие они?). Что дальше? Подключать FRAM и пользоваться или что-то еще надо пилить?
 

Yarri

New member
Не стал создавать новую тему с тем же вопросом.
У меня есть NodeMCU и есть счетчик ABB FBU 11205-108, у которого имеется кроме индикатора светодиодом еще и импульсный выход (в виде оптопары)
вот такой же у меня стоит в щитке (щиток в квартире):

По счастью мне его опломбировали только внизу, а импульсный выход у него вверху и не опломбирован. Захотелось снимать показания с него (импульсы), поскольку начинаю изучать Ардуино и 8266 и собирать свой умный дом.
Но в спецификации на АББ написано, что там транзисторный выход и он требует от 5 до 40В, т.е. вполне вероятно, что 3.3v не прокатят. Допустим, 5в я смогу брать параллельно со входа из блока питания на плату.
Но как правильно завести сигнал на GPIO для подсчета чтобы его не сжечь и с наименьшими дополнениями по схематике (типа резистор 10кОм, еще одна оптопара на 3.3В)?

Спецификация на АББ
Код:
Подключение, основные клеммы, - 1 x мм2 0 - 2.5
Внешнее импульсное напряжение
- Напряжение (В) DC 5 - 40 (Транзисторный выход)
- Напряжение (В) (перем/пост) N/A
Макс. ток (мA) 100
Длительность импульса (мс) 100 (± 2.5)
Частота импульсов (имп/кВтч) 100
Стандарт IEC 62053-1 (SO)
Или таки придется городить дополнительную обвязку?
 

pvvx

Активный участник сообщества
Но в спецификации на АББ написано, что там транзисторный выход и он требует от 5 до 40В, т.е. вполне вероятно, что 3.3v не прокатят. Допустим, 5в я смогу брать параллельно со входа из блока питания на плату.
Судя по параметрам там видимо уже стоит оптопара.
Но как правильно завести сигнал на GPIO для подсчета чтобы его не сжечь и с наименьшими дополнениями по схематике (типа резистор 10кОм, еще одна оптопара на 3.3В)?
Зачем бояться сжечь дурной чип, который стоит менее булки хлеба? :eek:
 

pvvx

Активный участник сообщества
Резистор на контакт к +5В и от этого-же контакта второй резистор на вход GPIO. Оба R 2..6.8 кОм. Это если второй контакт на GND
Но можно просто делитель из 2-х R и контакт на +5V.
 

pvvx

Активный участник сообщества
По первому варианту так:

Код:
  ~----[=R1=]--- +5V
  |    
  *---[=R2=]---- GPIO
  |
   /
  /
  |
GND
Входы ESP8266 защищены от перенапряжения. Но должен быть ограничен ток. Он и будет ограничен на GPIO через R2.
 

pvvx

Активный участник сообщества
Второй вариант:
Код:
          --[=R1=]--- КЕY --- +5V
GPIO ----{
          --[=R2=]--- GND
 
Сверху Снизу