Данные (импульсы) снимаются со счетчика электроэнергии посредством подключения либо телеметрическому (импульсному) выходу или на светодиод счетчика навешивается фототранзистор.
Данные отправляются на облачный сервер и записываются во 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
подскажите а читать данные со счетчика через RS485 получится с помощью esp8266 ?
ОтветитьУдалить