Оглавление:

Считайте счетчик электроэнергии и газа (бельгийский / голландский) и загрузите в Thingspeak: 5 шагов
Считайте счетчик электроэнергии и газа (бельгийский / голландский) и загрузите в Thingspeak: 5 шагов

Видео: Считайте счетчик электроэнергии и газа (бельгийский / голландский) и загрузите в Thingspeak: 5 шагов

Видео: Считайте счетчик электроэнергии и газа (бельгийский / голландский) и загрузите в Thingspeak: 5 шагов
Видео: Непарадная жизнь дворца. 2024, Июль
Anonim
Считайте счетчик электроэнергии и газа (бельгийский / голландский) и загрузите в Thingspeak
Считайте счетчик электроэнергии и газа (бельгийский / голландский) и загрузите в Thingspeak
Считайте счетчик электроэнергии и газа (бельгийский / голландский) и загрузите в Thingspeak
Считайте счетчик электроэнергии и газа (бельгийский / голландский) и загрузите в Thingspeak

Если вы беспокоитесь о своем энергопотреблении или просто немного ботаник, вы, вероятно, захотите увидеть данные своего нового модного цифрового измерителя на своем смартфоне.

В этом проекте мы получим текущие данные с бельгийского или голландского цифрового счетчика электроэнергии и газа и загрузим их в Thingspeak. Эти данные включают в себя текущее и дневное потребление и потребление энергии (если у вас есть солнечные панели), напряжения и токи, а также потребление газа (если цифровой счетчик газа подключен к счетчику электроэнергии). Затем через приложение эти значения могут быть считаны в реальном времени на вашем смартфоне.

Он работает с бельгийским или голландским цифровым счетчиком, который следует протоколу DSMR (голландские требования к интеллектуальным счетчикам), который должен быть для всех недавних счетчиков. Если вы живете в другом месте, к сожалению, ваш счетчик, скорее всего, будет использовать другой протокол. Так что я боюсь, что этот Instructable немного ограничен по регионам.

Мы будем использовать порт P1 измерителя, который принимает кабель RJ11 / RJ12, в просторечии известный как телефонный кабель. Убедитесь, что установщик измерителя активировал порт P1. Например, для Fluvius в Бельгии следуйте этим инструкциям.

Для обработки данных и загрузки в Интернет мы используем ESP8266, дешевый микрочип со встроенным Wi-Fi. Это стоит всего около 2 долларов. Более того, его можно запрограммировать с помощью Arduino IDE. Мы храним данные в облаке на Thingspeak, которое предоставляется бесплатно максимум для четырех каналов. Для этого проекта мы используем только один канал. Затем данные можно отобразить на вашем смартфоне с помощью такого приложения, как IoT ThingSpeak.

Части:

  • Один ESP8266, как и nodemcu v2. Обратите внимание, что nodemcu v3 слишком широк для стандартной макетной платы, поэтому я предпочитаю v2.
  • Кабель с микро-USB на USB.
  • Зарядное устройство USB.
  • Один транзистор BC547b NPN.
  • Два резистора 10 кОм и один резистор 1 кОм.
  • Один винтовой клеммный разъем RJ12.
  • Макет.
  • Провода перемычки.
  • Дополнительно: один конденсатор емкостью 1 нФ.

В общей сложности это стоит около 15 евро на AliExpress или аналогичном. В оценке учитывается, что некоторые компоненты, такие как резисторы, транзисторы и провода, поставляются в гораздо большем количестве, чем вам нужно для этого проекта. Так что, если у вас уже есть комплект компонентов, он будет дешевле.

Шаг 1. Знакомство с ESP8266

Я выбрал NodeMCU v2, так как пайка не требуется, и он имеет соединение micro USB, что позволяет легко программировать. Преимущество NodeMCU v2 перед NodeMCU v3 заключается в том, что он достаточно мал, чтобы поместиться на макетной плате и оставить свободные отверстия сбоку для подключения. Так что лучше избегать NodeMCU v3. Однако, если вы предпочитаете другую плату ESP8266, это тоже нормально.

ESP8266 можно легко запрограммировать с помощью Arduino IDE. Есть и другие инструкции, которые подробно объясняют это, поэтому я буду здесь очень краток.

  • Сначала загрузите IDE Arduino.
  • Вторая установка поддержки платы ESP8266. В меню File - Preferences - Settings добавьте URL https://arduino.esp8266.com/stable/package_esp8266com_index.json к дополнительным URL-адресам Board Manager. Далее в меню Tools - Board - Boards Manager устанавливаем esp8266 от сообщества esp8266.
  • В-третьих, выберите плату, ближайшую к вашему ESP8266. В моем случае я выбрал NodeMCU v1.0 (модуль ESP 12-E).
  • Наконец, в разделе Инструменты - Размер флэш-памяти выберите размер, включающий SPIFFS, например 4M (1M SPIFFS). В этом проекте мы используем SPIFFS (SPI Flash File System) для хранения ежедневных значений энергии, чтобы они не терялись при потере питания ESP8266 и даже при его перепрограммировании.

Теперь у нас есть все необходимое для программирования ESP8266! Фактический код мы обсудим позже. Сначала мы создадим учетную запись Thingspeak.

Шаг 2. Создайте учетную запись и канал Thingspeak

Перейдите на https://thingspeak.com/ и создайте учетную запись. После входа в систему нажмите кнопку «Новый канал», чтобы создать канал. В настройках канала введите название и описание, как хотите. Затем мы называем поля канала и активируем их, устанавливая флажки справа. Если вы используете мой код без изменений, поля будут следующими:

  • Поле 1: пиковое потребление сегодня (кВтч)
  • Поле 2: внепиковое потребление сегодня (кВтч)
  • Поле 3: пиковая закачка сегодня (кВтч)
  • Поле 4: внепиковая закачка сегодня (кВтч)
  • Поле 5: потребление тока (Вт)
  • Поле 6: подача тока (Вт)
  • Поле 7: потребление газа сегодня (м3)

Здесь под пиковой и непиковой нагрузкой понимается тариф на электроэнергию. В полях 1 и 2 потребление относится к чистому потреблению электроэнергии сегодня: потребление электроэнергии сегодня в тарифном периоде с полуночи за вычетом подачи электроэнергии (произведенной солнечными батареями) сегодня в тарифном периоде с полуночи с минимумом нуля. Последнее означает, что если сегодня было больше впрысков, чем потребления, то значение равно нулю. Аналогичным образом, закачка в поля 3 и 4 означает чистую закачку электроэнергии. В полях 5 и 6 указано чистое потребление и закачка в текущий момент. Наконец, поле 7 - потребление газа с полуночи.

Для дальнейшего использования запишите идентификатор канала, ключ API чтения и ключ API записи, которые можно найти в меню ключей API.

Шаг 3: построение электронной схемы

Создание электронной схемы
Создание электронной схемы
Создание электронной схемы
Создание электронной схемы

Мы снимаем показания счетчика электроэнергии через порт P1, для которого используется кабель RJ11 или RJ12. Разница в том, что кабель RJ12 имеет 6 проводов, а RJ11 - только 4. В этом проекте мы не питаем ESP8266 от порта P1, поэтому нам действительно нужно только 4 провода, поэтому подойдет RJ11.

Я использовал разъем RJ12, показанный на картинке. Он немного широк, и в моем измерителе не так много места вокруг порта P1. Подходит, но плотно. В качестве альтернативы вы можете просто использовать кабель RJ11 или RJ12 и снять заголовок с одного конца.

Если вы держите вырывной элемент, как на картинке, штыри пронумерованы справа налево и имеют следующее значение:

  • Контакт 1: источник питания 5 В
  • Контакт 2: запрос данных
  • Контакт 3: Земля данных
  • Контакт 4: не подключен
  • Контакт 5: линия передачи данных
  • Контакт 6: заземление

Контакты 1 и 6 могут использоваться для питания ESP8266, но я это не тестировал. Вам нужно будет подключить контакт 1 к Vin ESP8266, поэтому внутренний регулятор напряжения платы используется для снижения напряжения с 5 В до 3,3 В, которое принимает ESP8266. Поэтому не подключайте его к контакту 3,3 В, потому что это может повредить ESP8266. Кроме того, питание от порта P1 со временем разряжает батарею цифрового измерителя.

Если на контакте 2 установлен высокий уровень, измеритель отправляет телеграммы данных каждую секунду. Фактические данные отправляются через контакт 5 со скоростью 115200 бод для современного цифрового измерителя (DSMR 4 и 5). Сигнал перевернут (низкий - 1, высокий - 0). Для более старого типа (DSMR 3 и ниже) скорость составляет 9600 бод. Для такого счетчика необходимо изменить скорость передачи в коде прошивки следующего шага: изменить строку Serial.begin (115200); в setup ().

Роль транзистора NPN двоякая:

  • Чтобы изменить сигнал, чтобы ESP8266 мог его понять.
  • Для изменения логического уровня с 5 В порта P1 на 3,3 В, ожидаемого для порта RX ESP8266.

Итак, создайте на макете электронную схему, как показано на схеме. Конденсатор увеличивает стабильность, но работает и без него.

Удерживайте подключение пина RX, пока вы не запрограммируете ESP8266 на следующем шаге. Действительно, вывод RX также необходим для связи через USB между ESP8266 и вашим компьютером.

Шаг 4. Загрузите код

Я сделал код доступным на GitHub, это всего лишь один файл: P1-Meter-Reader.ino. Просто скачайте его и откройте в Arduino IDE. Или вы можете выбрать File - New и просто скопировать / вставить код.

В начале файла необходимо ввести некоторую информацию: имя и пароль используемой WLAN, а также идентификатор канала и ключ API записи канала ThingSpeak.

Код делает следующее:

  • Считывает телеграмму данных со счетчика каждые UPDATE_INTERVAL (в миллисекундах). Значение по умолчанию - каждые 10 секунд. Обычно телеграмма с данными от счетчика поступает каждую секунду, но установка высокой частоты приведет к перегрузке ESP8266, поэтому он больше не сможет запускать веб-сервер.
  • Загружает данные об электричестве в канал Thingspeak каждые SEND_INTERVAL (в миллисекундах). Значение по умолчанию - каждую минуту. Чтобы определить эту частоту, примите во внимание, что отправка данных занимает некоторое время (обычно несколько секунд) и что существует ограничение на частоту обновления на Thingspeak для бесплатной учетной записи. Это около 8200 сообщений в день, поэтому максимальная частота будет примерно один раз в 10 секунд, если вы не используете Thingspeak ни для чего другого.
  • Загружает данные о газе при их изменении. Обычно счетчик обновляет данные о потреблении газа только каждые 4 минуты или около того.
  • Счетчик отслеживает общий расход и значения впрыска с самого начала. Таким образом, чтобы получить ежедневное потребление и инъекцию, код сохраняет общие значения в полночь каждый день. Затем эти значения вычитаются из текущих общих значений. Значения в полночь сохраняются в SPIFFS (файловая система SPI Flash), которая сохраняется, если ESP8266 теряет питание или даже при перепрограммировании.
  • ESP8266 запускает мини-веб-сервер. Если вы откроете его IP-адрес в своем браузере, вы получите обзор всех текущих значений электроэнергии и газа. Они взяты из самой последней телеграммы и включают информацию, которая не загружается в Thingspeak, например, напряжения и токи на каждую фазу. По умолчанию IP-адрес определяется вашим маршрутизатором динамически. Но удобнее использовать статический IP-адрес, который всегда один и тот же. В этом случае вы должны указать в коде staticIP, gateway, dns и subnet и раскомментировать строку WiFi.config (staticIP, dns, gateway, subnet); в функции connectWifi ().

После того, как вы внесли эти изменения, вы готовы загрузить прошивку в ESP8266. Подключите ESP8266 с помощью кабеля USB к компьютеру и нажмите значок со стрелкой в среде Arduino IDE. Если вам не удается подключиться к ESP8266, попробуйте изменить COM-порт в меню Инструменты - Порт. Если он по-прежнему не работает, возможно, вам придется вручную установить драйвер для виртуального COM-порта USB.

Шаг 5: Тестирование

После загрузки прошивки отключите USB и подключите провод RX ESP8266. Помните, что нам нужен был канал RX ESP8266 для загрузки прошивки, поэтому мы не подключали его раньше. Теперь подключите разъем RJ12 к цифровому измерителю и снова подключите ESP8266 к компьютеру.

В среде Arduino IDE откройте Serial Monitor через меню «Инструменты» и убедитесь, что для него установлено значение 115200 бод. Если вам нужно изменить скорость передачи, возможно, вам нужно закрыть и снова открыть Serial Monitor, прежде чем он заработает.

Теперь вы должны увидеть вывод кода в Serial Monitor. Вы должны проверить, нет ли сообщений об ошибках. Кроме того, вы должны увидеть телеграммы. Для меня они выглядят так:

/ FLU5 / xxxxxxxxx_x

0-0: 96.1.4 (50213) 0-0: 96.1.1 (3153414733313030313434363235) // Шестнадцатеричный счетчик серийного номера 0-0: 1.0.0 (200831181442S) // Отметка времени S: переход на летнее время (лето), W: нет летнее время (зима) 1-0: 1.8.1 (000016.308 * кВтч) // Общее пиковое нетто-потребление 1-0: 1.8.2 (000029.666 * кВтч) // Общее внепиковое нетто-потребление 1-0: 2.8.1 (000138.634 * кВтч) // Общая пиковая нетто-впрыска 1-0: 2.8.2 (000042.415 * кВтч) // Общая внепиковая нетто-впрыска 0-0: 96.14.0 (0001) // Тариф 1: пик, 2: внепиковый 1-0: 1.7.0 (00,000 * кВт) // Потребление тока 1-0: 2.7.0 (00,553 * кВт) // Ввод тока 1-0: 32.7.0 (235,8 * В) // Фаза 1 напряжение 1-0: 52.7.0 (237.0 * В) // Напряжение фазы 2 1-0: 72.7.0 (237,8 * В) // Напряжение фазы 3 1-0: 31.7.0 (001 * A) // Ток фазы 1 1-0: 51.7.0 (000 * A) // Ток фазы 2 1-0: 71.7.0 (004 * A) // Ток фазы 3 0-0: 96.3.10 (1) 0-0: 17.0.0 (999.9 * кВт) // Максимальная мощность 1-0: 31.4.0 (999 * A) // Максимальный ток 0-0: 96.13.0 () // Сообщение 0-1: 24.1.0 (003) // другие устройства на M-bus 0-1: 96.1.1 (37464C4F32313230313037393338) // Серийный номер газового счетчика r шестнадцатеричный 0-1: 24.4.0 (1) 0-1: 24.2.3 (200831181002S) (00005.615 * m3) // Общий расход газа по метке времени! E461 // Контрольная сумма CRC16

Если что-то не так, вы можете проверить, есть ли у вас одинаковые теги, и, возможно, вам придется изменить код, анализирующий телеграммы, в функции readTelegram.

Если все работает, вы можете подключить esp8266 к зарядному устройству USB.

Установите приложение IoT ThingSpeak Monitor на свой смартфон, введите идентификатор канала и прочтите ключ API. Готово!

Рекомендуемые: