Оглавление:

Контроллер стартера DOL на основе IOT для ирригационной насосной установки: 6 шагов
Контроллер стартера DOL на основе IOT для ирригационной насосной установки: 6 шагов

Видео: Контроллер стартера DOL на основе IOT для ирригационной насосной установки: 6 шагов

Видео: Контроллер стартера DOL на основе IOT для ирригационной насосной установки: 6 шагов
Видео: Мало кто знает об этой функции БЛОКА ПИТАНИЯ от ноутбука!!! 2024, Ноябрь
Anonim
Контроллер стартера DOL на базе IOT для ирригационной насосной установки
Контроллер стартера DOL на базе IOT для ирригационной насосной установки
Контроллер стартера DOL на базе IOT для ирригационной насосной установки
Контроллер стартера DOL на базе IOT для ирригационной насосной установки

Привет друзья

В этой инструкции рассказывается, как удаленно контролировать и управлять ирригационным насосом через Интернет.

История: На своей ферме я получаю электроэнергию от местной сети только около 6 часов в день. Сроки нерегулярные, подача электроэнергии может быть рано утром, поздно вечером или даже в полночь. Каждый раз выезжать на локацию скважины для проверки наличия электроэнергии, запуск или остановка двигателя был очень болезненным процессом. Кроме того, я должен был обеспечить, чтобы двигатель работал не менее 2-3 часов каждый день, чтобы обеспечить достаточное количество воды для капельной системы. Некоторое время я изучал варианты решения этой проблемы, дистанционно управляя двигателем, а также узнавая его статус. На рынке доступны устройства, которые запускают двигатель, как только появляется источник питания, но у них нет функции, позволяющей останавливать двигатель, когда мы захотим. А также нет возможности узнать состояние включения / выключения двигателя в любой момент времени. Обычно это приводит к чрезмерному орошению, что приводит к потере плодородия почвы, а также к потере электроэнергии. Наконец, я сам создал решение, позволяющее запускать и останавливать двигатель удаленно с мобильного телефона / планшета / ПК В ЛЮБОЕ ВРЕМЯ ВЕЗДЕ… !!. Также я могу постоянно контролировать доступность питания от сети, а также состояние двигателя (ВКЛ / ВЫКЛ). Надеюсь, это поможет владельцам фермерских хозяйств в сельской местности управлять своими ирригационными системами без необходимости постоянно посещать место для старта.

Запасы

Предпосылки:

В месте, где вы хотите установить это устройство, должен быть доступ к Интернету (широкополосный доступ к Wi-Fi / мобильный Интернет)

Вещи, которые нужно:

  1. NodeMCU / ESP12
  2. Двухканальное реле
  3. WCS1700 - Датчик тока
  4. Модуль зарядки аккумулятора TP4056
  5. LD313, конденсатор - регистр 1000 мкФ - два регистра по 5 кОм
  6. Любой (старый) смартфон с точкой доступа / интернетом.

Как это работает:

Это простое облачное решение IOT с использованием NodeMCU / ESP12 и удаленного брокера MQTT. NodeMCU работает как шлюз IOT, а также управляет стартером DOL. Он подключается к удаленному брокеру MQTT через Интернет. Приложение, работающее на мобильном устройстве Android, подключается к брокеру, с помощью которого мы можем постоянно контролировать и контролировать нашу ирригационную насосную установку. Я использовал бесплатный доступный брокер MQTT от Adafruit IO. Доступно множество бесплатных брокеров, таких как mosquitto, cloudmqtt и т. Д. Вы можете выбрать любого брокера при условии, что вы измените сервер и номер порта в коде. NodeMCU подключается к Интернету через Wi-Fi из мобильной точки доступа. Йон может использовать любой старый или недорогой мобильный телефон для обеспечения доступа к Wi-Fi через точку доступа или любые другие средства предоставления Интернета через Wi-Fi. Мобильный должен быть подключен к зарядному устройству, как и положено 24X7.

NodeMCU сопряжен с двумя реле для управления запуском и остановкой двигателя. Для измерения тока в двигателе я использовал датчик тока WCS1700. Аналоговый выход датчика используется, чтобы знать, что двигатель включен или выключен. Он также определяет доступность электроэнергии из сети и передает ее брокеру, чтобы мы могли узнать состояние сети в любое время. Устройство подписывается на два канала для получения запроса на включение и выключение двигателя. Посылая определенные значения этим каналам, мы можем управлять двигателем в положение ПУСК или СТОП.

Наконец, я установил приложение MQTT Dash на свой телефон Android и настроил его для подключения к брокеру MQTT и использования каналов на его панели инструментов / графическом интерфейсе. В приложении есть очень хорошие значки с кнопками, датчиком, переключателем и т. Д. Для создания привлекательной панели инструментов. Однако вы можете использовать любое мобильное приложение IOT для домашней автоматизации, которое поддерживает протокол mqtt.

Как работает WCS1700:

WCS1700 - это, по сути, датчик на эффекте Холла, который производит выходное напряжение, пропорциональное магнитному полю, создаваемому при протекании тока через катушку. Катушка здесь - это линия питания, которая будет подключена к двигателю. Он может измерять переменный ток до 70 ампер. Рабочее напряжение находится в пределах от 3,3 до 12 В. Для получения более подробной информации обратитесь к его техническому паспорту. Поскольку я использую ESP12, я использовал тот же источник питания 3,3 В, что и рабочее напряжение для WCS1700. Как указано в техническом паспорте, при напряжении 3,3 В устройство должно создавать дифференциальное напряжение от 32 до 38 мВ на ампер тока через катушку. Но это может варьироваться в зависимости от размера катушки / воздушного зазора и вариантов устройства. Следовательно, мне пришлось откалибровать его, проверив с помощью амперметра. Я не доволен точностью устройства, но его достаточно, чтобы определить статус двигателя как ВКЛ / ВЫКЛ. Выходной контакт WCS1700 подключается к A0 ESP12. Когда нет тока, ESP12 должен считывать значение около 556. По мере увеличения тока в катушке напряжение может меняться в любую сторону в зависимости от того, как кабель проходит через датчик. В коде я принял разницу значений за абсолютное значение (x - 556). Разделив результат на 15, я получил приблизительный ток, протекающий через датчик. Вам придется поэкспериментировать с этим, чтобы получить правильный номер для вас. Любое измерение тока устройством выше 5 А я считаю двигателем включенным, а ниже 5 А - двигателем ВЫКЛЮЧЕНО. Вы можете использовать правильный номер для своего устройства, поэкспериментировав. Вам необходимо соответственно изменить WCS1700_CONST и MIN_CURRENT в коде.

Шаг 1: Конструкция устройства

Конструкция устройства
Конструкция устройства
Конструкция устройства
Конструкция устройства

На схеме выше подробно показано, как подключать все компоненты.

Источник питания: я использовал TP4056 для зарядки батарей и LM313, чтобы отрегулировать выходное напряжение батареи 3,7-4,2 В до 3,3 В для питания NodeMCU. Используется конденсатор емкостью 1000 мФ между Vin и землей LM313, чтобы получить стабильное питание 3,3 В. Для питания TP4056 можно использовать обычное мобильное зарядное устройство USB. Он имеет схему защиты аккумулятора для защиты аккумулятора от перезарядки.

Определение источника питания сети: делитель напряжения 5 кОм снизит напряжение с 5 В до 2,5 В. Контакт D5 NodeMCU будет определять напряжение.

Выходной контакт WCS1700 подключен к A0 для считывания аналогового напряжения с датчика. Линия Grid Power должна проходить через отверстие для измерения тока. Я использовал конденсатор 0,01 мкФ, чтобы получить стабильные показания WCS1700.

D1 и D2 NodeMCU должны быть подключены к IN0 и IN1 входных контактов реле.

Шаг 2: Подключение стартера DOL

Подключения стартера DOL
Подключения стартера DOL
Подключения стартера DOL
Подключения стартера DOL

Я настроил схему управления стартера DOL, чтобы ввести еще один набор переключателей START и STOP. Это изменение не повлияет на ручной запуск / остановку, и они продолжат работать как есть.

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

Я использовал 2-канальный релейный модуль на 5 В в качестве переключателя ПУСК и СТОП. Эти реле будут управляться ESP12.

Реле - 0 будет работать как переключатель START - подключено как NO (нормально разомкнутый).

Реле-1 будет работать как выключатель СТОП - подключено как NC (нормально замкнутый). У стартера уже будет провод, соединяющий верхний контактор с NVC. Вам нужно будет удалить его и заменить проводами реле -1, как показано.

Убедитесь, что соединения между пускателем и модулями реле полностью изолированы в целях безопасности. Я запрограммировал ESP на удержание обоих реле в течение 2 секунд, чтобы имитировать нажатие кнопки START / STOP.

Шаг 3. Создайте учетную запись в Adafruit IO (io.adafruit.com)

Я использовал брокера Adafruit io mqtt, который можно использовать бесплатно с небольшими ограничениями, но он подходит для нашего использования. Я предпочитаю это, потому что я использовал его и в других проектах и нашел его довольно надежным, а также имеет много других функций, таких как Dashboard с красивым графическим интерфейсом, и даже мы можем использовать триггеры. Чтобы использовать Adafruit io, вам необходимо создать учетную запись и запомнить имя пользователя и активный ключ.

Шаг 4: Соберите и установите программное обеспечение

Полный код доступен в скетче. Вам нужно открыть это в Arduino IDE и внести несколько изменений перед компиляцией и загрузкой прошивки. Выберите тип платы как NodeMCU 1.0. Установка IDE и связанных библиотек не входит в объем данной документации.

Измените следующие строки в коде как неверные.

#define WLAN_SSID "xxx" // SSID Wi-Fi вашей мобильной точки доступа

#define WLAN_PASS "……" //

/ ************************ Настройка Adafruit.io ******************** ************* /

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883 // использовать 8883 для SSL

#define AIO_USERNAME "xyz" // Имя пользователя вашей учетной записи adafruit

#define AIO_KEY "abcd ……" // ваш активный ключ…

О каналах MQTT: устройство и клиент (мобильное приложение) обмениваются информацией через каналы сообщений с использованием подмодели pub через брокера MQTT. Любой клиент или устройство для получения сообщения должны подписаться на предопределенный канал и использовать метод публикации для отправки сообщения в канал. Для нашего проекта нам потребуется около 5 каналов. Ниже приводится объяснение каждого канала, который вы видите в коде, и того, как они работают.

Состояние сети: доступность источника питания из сети публикуется в ленте /feeds/grid. Adafruit_MQTT_Publish grid_stat = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / grid");

0 означает, что источник питания недоступен, а 1 означает, что источник питания доступен.

Состояние двигателя: устройство опубликует состояние двигателя в feed… / feeds / grid.

Adafruit_MQTT_Publish motor_status = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / motor")

Значение 0 для ВЫКЛ. И 1 для ВКЛ.

Кнопка включения двигателя: эта подача используется для получения запроса на запуск двигателя. Устройство подписывается на канал для получения запроса на запуск двигателя со значением = 1 и использует тот же канал для публикации подтверждающего сообщения как 0. Таким образом мы можем подтвердить, что сообщение с запросом на запуск действительно было получено устройством.

Adafruit_MQTT_Subscribe motoronbutton = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / motor_on");

Кнопка выключения двигателя:

Подобно запросу пуска, этот канал используется для получения запроса на остановку двигателя. Устройство подпишется на канал для получения запроса на остановку со значением = 1 и будет использовать тот же канал для публикации сообщения подтверждения как 0.

Adafruit_MQTT_Subscribe motoroffbutton = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / motor_off");

Связь:

Это специальный канал с включенной опцией «последнее завещание». Когда устройство работает нормально через каждый фиксированный интервал, оно публикует connection = 1, чтобы сообщить пользователю, что все в порядке. В случае отказа системы или потери связи устройство не сможет связаться с брокером. В таких случаях брокер MQTT сам публикует в фиде как connection = 0, чтобы пользователь знал, что что-то пошло не так и устройство недоступно через Интернет. Мы должны пойти и проверить устройство. Код очень простой. Обратитесь к документации MQTT для получения более подробной информации о том, как работает «Last Will».

если (itr <= 0)

{

mqtt.publish (AIO_USERNAME "/ feeds / connection", "1", 1);

itr = CON_LIVE_ITR;

}

Остальная часть кода говорит сама за себя, и никаких изменений не требуется. Не стесняйтесь комментировать, если вам нужна дополнительная информация.

Шаг 5. Установите и настройте приложение MQTT Dash на своем мобильном телефоне

Установите и настройте приложение MQTT Dash на своем мобильном телефоне
Установите и настройте приложение MQTT Dash на своем мобильном телефоне
Установите и настройте приложение MQTT Dash на своем мобильном телефоне
Установите и настройте приложение MQTT Dash на своем мобильном телефоне
Установите и настройте приложение MQTT Dash на своем мобильном телефоне
Установите и настройте приложение MQTT Dash на своем мобильном телефоне
  1. Установите MQTT Dash на свой телефон Android и откройте приложение
  2. Щелкните значок + в правом верхнем углу, чтобы добавить устройство.
  3. Как показано на первом изображении выше, дайте вашему устройству имя, например «MyFarm-IPSet». Поле адреса io.adafruit.com и порт 1883, имя пользователя должно быть вашим именем пользователя adafruit, а пароль должен быть вашим активным ключом от adafruit. Остальные поля оставьте как есть. Наконец, нажмите "Сохранить".
  4. Вы создали свое устройство. Теперь щелкните по нему, чтобы добавить к нему панель управления.
  5. Нажмите на + и выберите тип как переключатель / кнопку. Как показано выше, введите sys в поле имени. и введите название канала в поле темы. каждый канал должен начинаться с имени пользователя / feeds /. для этого мы / feeds / connection. Убедитесь, что параметр «Включить публикацию» отключен. Щелкнув значок для отображения, вы можете выбрать тип значка, который должен выглядеть на панели управления. Для значения 1 выберите один из цветов (например, зеленый), а для значения 0 выберите серый или красный цвет. Наконец, нажмите "Сохранить" в правом верхнем углу. Аналогичным образом создайте еще два значка: один для Grid с именем пользователя / feeds / grid в качестве темы и Motor с именем пользователя / feeds / motor. Убедитесь, что параметр «Включить публикацию» отключен.
  6. Наконец, создайте кнопку включения двигателя. Он снова такой же, как и тип переключателя / кнопки. Тема должна быть / feeds / motor_on, и убедитесь, что на этот раз включена функция «Включить публикацию» и QOS = 1. Аналогичным образом создайте еще одну кнопку для Motor OFF. Тема должна быть / feeeds / motor_off.

Шаг 6: Последний шаг:-) Тестирование и точная настройка

  1. В целях безопасности вам необходимо сначала проверить устройство на его операции ПУСК и СТОП, прежде чем подключать реле к стартеру DOL. Включите точку доступа на мобильном телефоне с подключенным Интернетом. Подключите ноутбук со средой разработки напрямую к USB-порту NodeMCU с другим зарядным устройством, подключенным к TP4056 одновременно. Если устройство успешно подключено к Интернету, вы должны увидеть на смартфоне 1 устройство, подключенное к точке доступа.
  2. На другом смартфоне, на котором вы установили MQTT Dash, откройте панель управления приложения. Вы должны увидеть, что значок NET зеленого цвета и значок сетки также зеленого цвета с их значениями 1. Значок двигателя должен отображаться как выключенный двигатель со значением 0.
  3. Когда вы нажимаете кнопку «Motor ON», пусковое реле должно издавать два щелчка с интервалом в две секунды. Точно так же и кнопка выключения двигателя.
  4. В целях безопасности отключите основное питание прямого стартера и подключите реле к прямому пускателю, как показано на шаге 2 выше. Убедитесь, что мотор выключен. Нажмите кнопку сброса на NodeMCU. Из выходных данных монитора последовательного порта вы можете видеть отладочные операторы, которые печатают значения датчика WC1700, дельту и рассчитанный ток в катушке. С двигателем в выключенном состоянии и "#define WCS1700_CONST 15" maxCur должен быть постоянно меньше 2. Если он показывает больше 2, попробуйте с более высокими значениями WCS1700_CONST. Каждый раз придется перекомпилировать код и загружать прошивку.
  5. Теперь включите двигатель и снова посмотрите текущие показания. Оставьте двигатель включенным примерно на 10-15 минут и запишите стабильное значение тока. Ток может варьироваться от 10 до 20 ампер примерно и не обязательно должен быть точным.
  6. Вернитесь к коду и установите «#define MIN_CURRENT X». Где X - это 40 процентов максимального тока, приближенного к числовому значению. В моем случае я установил MIN_CURRENT на 5. Скомпилируйте и снова загрузите прошивку в NodeMCU.
  7. Отсоедините USB-кабель от NodeMCU. Выключите и включите устройство с зарядным устройством USB, подключенным к TP4056. При нажатии на кнопку «Motor ON» в мобильном приложении двигатель должен запускаться. Когда двигатель включен, состояние двигателя должно отображаться на панели инструментов приложения как ВКЛ. Нажатие на кнопку останова должно остановить двигатель.

Наслаждаться !!!!

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