Оглавление:
- Шаг 1. Знакомство с ESP8266
- Шаг 2. Создайте учетную запись и канал Thingspeak
- Шаг 3: построение электронной схемы
- Шаг 4. Загрузите код
- Шаг 5: Тестирование
Видео: Считайте счетчик электроэнергии и газа (бельгийский / голландский) и загрузите в Thingspeak: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:47
Если вы беспокоитесь о своем энергопотреблении или просто немного ботаник, вы, вероятно, захотите увидеть данные своего нового модного цифрового измерителя на своем смартфоне.
В этом проекте мы получим текущие данные с бельгийского или голландского цифрового счетчика электроэнергии и газа и загрузим их в 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. Готово!
Рекомендуемые:
Счетчик Гейгера счетчик PKE: 7 шагов (с изображениями)
Счетчик Гейгера PKE Meter: Я давно хотел построить счетчик Гейгера, чтобы дополнить мою охлаждаемую камеру Пельтье. Есть (надеюсь) не очень полезная цель владения счетчиком Гейгера, но мне просто нравятся старые русские лампы, и я подумал, что это будет
СЧИТАЙТЕ АНАЛОГОВОЕ НАПРЯЖЕНИЕ - ARDUINO - ВЫЯВЛЕНИЕ КОДА №1: 5 шагов
ЧТЕНИЕ АНАЛОГОВОГО НАПРЯЖЕНИЯ - ARDUINO - ОБНАРУЖЕНИЕ КОДА # 1: ВЫБОР КОДА # 1 ЧИТАТЬ АНАЛОГОВОЕ НАПРЯЖЕНИЕ: В этом примере показано, как считывать аналоговый вход на аналоговом выводе 0, преобразовывать значения из analogRead () в напряжение и распечатывать его в последовательном монитор программного обеспечения Arduino (IDE)
Умный счетчик электроэнергии: 3 шага
Интеллектуальный счетчик электроэнергии: практически все цифровые счетчики электроэнергии (интеллектуальные или нет) имеют индикатор, который мигает каждый раз, когда используется определенное количество энергии - часто один раз на каждый ватт-час (обычно обозначается как 1000 имп / кВтч). обнаружить это с помощью простой функции Light Depen
Счетчик потребления электроэнергии CHINT + ESP8266 и матричный светодиод MAX7912: 9 шагов (с изображениями)
Счетчик потребления электроэнергии CHINT + ESP8266 и матричный светодиод MAX7912: на этот раз мы вернемся к интересному проекту, измерению потребления электроэнергии инвазивным способом с помощью однофазного счетчика CHINT DDS666, технически это бытовой или жилой счетчик, который у нас уже есть представлен в предыдущем ту
Считайте свой основной счетчик электроэнергии (ESP8266, WiFi, MQTT и Openhab): 6 шагов (с изображениями)
Прочтите свой счетчик электроэнергии от основной мощности (ESP8266, WiFi, MQTT и Openhab): в этой инструкции вы узнаете, как я прочитал, как я прочитал использование основной электроэнергии в моем доме, и опубликовал его через ESP8266, Wifi, MQTT в моей системе автоматизации дома Openhab. У меня есть «умный счетчик» ISKRA Type MT372, однако у него нет простой возможности экспортировать