Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Отслеживайте свои счета за электроэнергию через Modbus, MKR WiFi 1010 и RS485

Компоненты и расходные материалы

Arduino MKR WiFi 1010
× 1
Arduino MKR 485 Shield
× 1
Кабель USB-A - Micro-USB
× 1
USB-источник питания
Совместимость с любым источником питания. Щит MKR485 имеет встроенный понижающий преобразователь 7-24 В.
× 1
Однопарный экранированный кабель витая пара
× 1

Необходимые инструменты и машины

Цифровой мультиметр Digilent Mastech MS8217 с автоматическим выбором диапазона
Ножницы для электриков
Маленькая отвертка с плоской головкой
для терминалов MKR485
Отвертка Philips среднего размера

Приложения и онлайн-сервисы

Домашний помощник
Веб-редактор Arduino
MQTT

Об этом проекте

Если вы действительно хотите сделать свой дом умнее, вы, вероятно, захотите начать со своих ежемесячных счетов (например, за электроэнергию, газ и т. Д.). Как говорят некоторые: Хорошо для планеты, кошелька и прибыли . Аппаратное обеспечение с открытым исходным кодом - это наш способ добиться устойчивости в домашних условиях! Эта идея побудила нас создать простое и безопасное решение, легко интегрируемое с любым программным обеспечением для домашней автоматизации, поскольку оно предоставляет данные через MQTT (в нашем случае мы покажем вам, как интегрировать его в Home Assistant).

Обзор

Чтобы измерить потребление электроэнергии, мы решили использовать счетчик энергии Finder, поскольку он разработан для использования на DIN-рейке и идеально подходит для основного шкафа в нашем доме. Самое замечательное в этом продукте то, что он имеет RS485 Modbus . interface, промышленный стандартный протокол связи, который упрощает общение с Arduino. Фактически, Arduino выпустила официальный щит MKR485 . и две библиотеки для декодирования протокола. В качестве основной платы мы выбрали Arduino MKR WiFi . 1010, поскольку он имеет форм-фактор MKR и имеет возможность подключения к Wi-Fi.

Настройка

Предупреждение! Ознакомьтесь с правилами вашей страны по обращению с электрической системой вашего дома и будьте предельно осторожны, потому что это может быть смертельно опасным! Если вы не знаете как вызвать электрика. Первым делом установите счетчик в свой электрический шкаф. Чтобы обеспечить безопасную работу, отключите питание от электрического разъема перед системой . и дважды проверьте мультиметром, что между клеммами нет напряжения .

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

Сделанный? Пора вкрутить соединение RS485! Мы будем использовать однопарный витой кабель с заземлением, обычно используемый для телефонных линий. С помощью этого кабеля вы можете передавать на большие расстояния (1,2 км). Однако мы просто используем кабель, достаточно длинный, чтобы выйти из шкафа и разместить Arduino в доступном месте.

Интерфейс RS485 называет свои клеммы A, B и COM.

Поскольку экран MKR поддерживает также полнодуплексный режим, вы увидите два других терминала, Y и Z. Здесь мы собираемся прикрутить другой конец кабеля, поскольку мы знаем из таблицы данных, что полудуплексная связь происходит только по Y и Z терминалы. Терминал COM должен быть подключен к ISOGND. Поскольку мы используем полудуплексное соединение и проводка является одноранговой, мы должны настроить переключатели на экране MKR485 в соответствии с нашей настройкой: мы устанавливаем ПОЛОВИНУ (2 на ВЫКЛ.) И завершение на YZ (3 в ON); первый не имеет значения. Терминатор представляет собой сопротивление, соединяющее два вывода данных, для подавления помех.

Это оно. Теперь вы можете закрыть кабинет и сосредоточиться на программном обеспечении!

Программное обеспечение

Запустите компьютер и откройте IDE. Вы можете использовать Arduino IDE или Arduino Create Editor. Код отвечает следующим требованиям:

  • Связь Modbus,
  • Управление Wi-Fi
  • Протокол MQTT

Modbus - это протокол с открытым исходным кодом для промышленных датчиков и машин. Чтобы заставить Arduino говорить о Modbus, мы собираемся использовать библиотеку Arduino Modbus. Эта библиотека объединяет все обработчики и позволяет очень быстро подключить любое устройство Modbus. Поскольку мы собираемся читать регистры, следуя таблице данных счетчика, мы можем найти всю необходимую нам информацию, такую ​​как коды функций, адрес регистра и размер регистра в словах. Но чтобы было понятнее, давайте объясним, как работает Modbus:

Сообщения Modbus имеют простую структуру:

01 03 04 00 16 00 02 25 C7

0x01 это адрес устройства

0x03 это код функции который сообщает устройству, хотим ли мы читать или записывать данные * в данном случае считываем регистры хранения

0x04 для Byte Count00 16 - Мы отправляем 4 байта регистрационного адреса (00 16) который сообщает устройству, что мы хотим прочитать

00 02 - t размер реестра (00 02) прописью (каждое слово имеет длину 2 байта)

Последние 4 байта - это код CRC . Этот код генерируется математической функцией на основе предыдущих байтов, это гарантирует, что сообщение было получено правильно.

В Arduino все это обрабатывается в if состояние:

  // Создано Альберто Перро - Officine Innesto //// Прочитать целое число из регистров хранения устройства Modbus float readCurrent () {float ampere =0 .; // следующая команда форматирует запрос и отправляет его через RS485 if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0016, 2)) {// Обработка ошибок Serial.print («не удалось прочитать напряжение!»); Serial.println (ModbusRTUClient.lastError ()); } еще {uint16_t word1 =ModbusRTUClient.read (); // чтение MSW из буфера uint16_t word2 =ModbusRTUClient.read (); // чтение LSW из буфера int32_t milliamp =word1 <<16 | word2; // объединяем слова для получения int ampere =milliamp / 1000.0; // преобразование в амперы} return ampere;}  

В else часть у нас есть обработчик ответа.

Поскольку этот регистр состоит из двух слов, мы должны соединить их двоичной математикой. Мы читаем слова из буфера и сохраняем их в виде целого числа без знака длиной 16 бит (2 байта или слово), затем мы объединяем их в целое число со знаком длиной 32 бита, сдвигая первое слово влево и применяя код <> ИЛИ над вторым словом. Таким образом, мы получаем значение тока в мА, разделив его на 1000, и получаем ток в амперах.

Этот же процесс адаптирован ко всему, что мы хотим прочитать.

Остальная часть кода предназначена для обработки сетей MQTT и WiFi.

Интеграция Home Assistant

Добавить счетчик в Home Assistant довольно просто. Предполагая, что у вас настроен брокер MQTT (вот руководство), все, что вам нужно сделать, это добавить новые определения в файл configuration.yaml.

  датчик:- платформа:mqtt name:"Main Voltage" state_topic:"energy / main / Voltage" unit_of_measurement:"V"  

Здесь вы должны указать название измерения, тему MQTT для чтения и единицу измерения количества. Сохраните файл, проверьте конфигурацию и перезагрузите Home Assistant, теперь измерения появятся на главной странице.

Home Assistant позаботится о создании графиков и автоматизирует процессы, вызванные вашими показаниями. Это руководство закончено, теперь вам нужно добавить функции и настроить его для своих целей!

Код

Мост Modbus RTU к MQTT для Finder
Этот эскиз обеспечивает полный мост между счетчиком энергии Finder и mqtt. Разработано для отслеживания затрат на электроэнергию и ее использования в Casa Jasmina.

Производственный процесс

  1. Создайте своего робота для видеостриминга, управляемого через Интернет, с помощью Arduino и Raspberry Pi
  2. Создание монитора Ambilight с помощью Arduino
  3. Как создать монитор энергии и регистратор данных Arduino
  4. ЖК-анимация и игры
  5. Вольтметр своими руками с использованием Arduino и смартфона
  6. Монитор сердечного ритма с использованием Интернета вещей
  7. Arduino Temp. Монитор и часы реального времени с дисплеем 3.2
  8. WebServerBlink с использованием Arduino Uno WiFi
  9. Arduino - отправка температуры в Интернет через последовательный
  10. Формы энергии:кинетическая и потенциальная энергия