Поиск

26 мая 2016 г.

Снятие показаний со счетчика электричества с помощью esp8266


Данные (импульсы) снимаются со счетчика электроэнергии посредством подключения либо телеметрическому (импульсному) выходу или на светодиод счетчика навешивается фототранзистор.

Данные отправляются на облачный сервер и записываются во FRAM память, для защиты от пропадания питания.

Память можно использовать с интерфейсом I2C или SPI. Если SPI, то используется режим overlap - память припаивается поверх флеша с прошивкой на модуле esp.

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




Память может быть как I2C так и SPI. Если 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 и ниже. 

Собранные значения углекислого газа отправляются на облачный сервер интернета вещей - ThingSpeak

Веб:



График c зумом строится с помощью open-source библиотеки d3j (Data-Driven Documents) :



Есть еще бегущий график - библиотека Smoothie Charts.

Схема (FRAM I2C): 

Схема (FRAM SPI):



Исходник здесь: https://github.com/vad7/PowerMeter


1 комментарий:

  1. подскажите а читать данные со счетчика через RS485 получится с помощью esp8266 ?

    ОтветитьУдалить