Tabla de contenido:

Controlador de arranque DOL basado en IOT para bomba de riego: 6 pasos
Controlador de arranque DOL basado en IOT para bomba de riego: 6 pasos

Video: Controlador de arranque DOL basado en IOT para bomba de riego: 6 pasos

Video: Controlador de arranque DOL basado en IOT para bomba de riego: 6 pasos
Video: ¿Cómo automatizar un sistema de producción agrícola utilizando un arduino MKR GSM 1400 y Blynk ? 2024, Noviembre
Anonim
Controlador de arranque DOL basado en IOT para bombas de riego
Controlador de arranque DOL basado en IOT para bombas de riego
Controlador de arranque DOL basado en IOT para bombas de riego
Controlador de arranque DOL basado en IOT para bombas de riego

Hola amigos

Este instructivo trata sobre cómo monitorear y controlar de forma remota una bomba de riego a través de Internet.

Historia: En mi granja obtengo suministro de energía de la red local solo durante aproximadamente 6 horas al día. Los horarios no son regulares, la disponibilidad de energía puede ser temprano en la mañana o tarde en la noche o incluso a medianoche. Cada vez que iba a la ubicación del pozo de perforación para verificar la disponibilidad de energía, arrancar o detener el motor era un proceso muy doloroso. También tuve que asegurarme de que el motor funcione al menos 2-3 horas todos los días para suministrar agua adecuada para el sistema de goteo. Durante bastante tiempo estuve explorando opciones para resolver este problema operando remotamente el motor y también conociendo el estado. Hay dispositivos disponibles en el mercado que arrancan el motor tan pronto como hay una fuente de alimentación, pero no tienen la función de detener el motor cuando queramos. Y tampoco hay forma de saber el estado del motor ENCENDIDO / APAGADO en ningún momento. Esto generalmente conduce a un riego excesivo, lo que lleva a la pérdida de la fertilidad del suelo y también al desperdicio de electricidad. Finalmente, construí una solución yo mismo donde puedo arrancar y detener el motor de forma remota desde el móvil / tableta / PC EN CUALQUIER MOMENTO Y EN CUALQUIER LUGAR… !!. También puedo monitorear la disponibilidad de la fuente de alimentación desde la cincha, así como el estado del motor (ENCENDIDO / APAGADO) todo el tiempo. Espero que ayude a los propietarios de granjas en el campo a administrar sus sistemas de riego sin la necesidad de ir al lugar de inicio todo el tiempo.

Suministros

Requisitos previos:

La ubicación donde desea instalar este dispositivo debe tener disponibilidad de internet (banda ancha con wifi / internet móvil)

Cosas que necesitas:

  1. NodeMCU / ESP12
  2. Relé de dos canales
  3. WCS1700 - Sensor de corriente
  4. Módulo de carga de batería TP4056
  5. LD313, Condensador - Registro 1000uF - Dos registros de 5k ohmios
  6. Cualquier teléfono inteligente (antiguo) con punto de acceso / Internet.

Cómo funciona:

Es una solución IOT simple basada en la nube que utiliza NodeMCU / ESP12 y un agente MQTT remoto. NodeMCU funciona como una puerta de enlace IOT, también controla el motor de arranque DOL. Se conecta al corredor MQTT remoto a través de Internet. Una aplicación que se ejecuta en un móvil Android se conecta al corredor a través del cual podemos monitorear y controlar nuestro conjunto de bomba de riego todo el tiempo. Utilicé el corredor MQTT gratuito disponible de Adafruit IO. Hay muchos corredores gratuitos disponibles como mosquitto, cloudmqtt, etc. Puede elegir cualquier corredor siempre que cambie el servidor y el número de puerto en el código. NodeMCU se conecta a Internet mediante WiFi desde el punto de acceso móvil. Puede usar cualquier teléfono móvil antiguo o de bajo costo para proporcionar acceso wifi a través de un punto de acceso o cualquier otro medio de proporcionar Internet a través de wifi. El móvil debe estar conectado al cargador como debe estar en 24X7.

NodeMCU está interconectado con dos relés para controlar el arranque y la parada del motor. Para detectar la corriente en el motor utilicé el sensor de corriente WCS1700. La salida analógica del sensor se usa para saber que el motor está ENCENDIDO o APAGADO. También detecta la disponibilidad de energía de la red y la publica al corredor para que podamos conocer el estado de la red en cualquier momento. El dispositivo se suscribe a dos alimentaciones para recibir la solicitud de motor ON y motor OFF. Al enviar valores específicos a estas alimentaciones podemos controlar el motor para ARRANCAR o PARAR.

Por último, instalé la aplicación MQTT Dash en mi teléfono Android y la configuré para conectarme al corredor MQTT y usar los feeds en su tablero / gui. La aplicación tiene muy buenos íconos con botones, indicadores, interruptores, etc. para crear un tablero atractivo. Sin embargo, puede utilizar cualquier aplicación móvil de automatización del hogar IOT que admita el protocolo mqtt.

Cómo funciona WCS1700:

WCS1700 es básicamente un sensor de efecto Hall que producirá un voltaje de salida proporcional al campo magnético creado a medida que la corriente fluye a través de la bobina. La bobina aquí es una línea de suministro de energía que se conectará al motor. Puede medir corriente CA hasta 70 amperios. El voltaje de funcionamiento está entre 3,3 y 12 V. Consulte su hoja de datos para obtener más detalles. Como estoy usando ESP12, utilicé la misma fuente de alimentación de 3.3V como voltaje de funcionamiento para WCS1700. Como se especifica en la hoja de datos a 3.3 V, el dispositivo debe producir un voltaje diferencial de aproximadamente 32 a 38 mV por amperio de corriente a través de la bobina. Pero puede variar según el tamaño de la bobina / espacio de aire y variaciones en el dispositivo. Por lo tanto, tuve que calibrarlo probándolo con amperímetro. No estoy contento con la precisión del dispositivo, pero es lo suficientemente bueno como para decidir el estado del motor como ENCENDIDO / APAGADO. El pin de salida de WCS1700 se conecta a A0 de ESP12. Cuando no hay corriente, el ESP12 debe leer el valor alrededor de 556. A medida que la corriente aumenta en la bobina, el voltaje puede variar en ambos lados según la forma en que el cable pasa a través del sensor. En el código, tomé la diferencia de los valores como valor absoluto de (x - 556). Al dividir el resultado entre 15, obtuve una corriente aproximada que fluye a través del sensor. Tendrá que experimentar esto para obtener el número correcto para usted. Cualquier medida de corriente del dispositivo por encima de 5 amperios la considero como motor ENCENDIDO y por debajo de 5 amperios como motor APAGADO. Puede utilizar el número correcto para su dispositivo experimentando. Debe cambiar WCS1700_CONST y MIN_CURRENT en el código en consecuencia.

Paso 1: Construcción del dispositivo

Construcción del dispositivo
Construcción del dispositivo
Construcción del dispositivo
Construcción del dispositivo

El diagrama anterior brinda detalles completos sobre cómo cablear todos los componentes.

Fuente de alimentación: utilicé TP4056 para cargar las baterías y LM313 para regular los 3,7 V - 4,2 V de salida de la batería a 3,3 V para alimentar NodeMCU. Se usó un condensador de 1000mF entre Vin y tierra del LM313 para obtener un suministro estable de 3.3V. Puede utilizar un cargador móvil USB normal para alimentar el TP4056. Tiene circuito de protección de batería para proteger la batería de sobrecarga.

Detección de la fuente de alimentación de la red: el divisor de voltaje de 5 k ohmios reducirá 5 V a 2,5 V. El pin D5 de NodeMCU detectará el voltaje.

El pin de salida del WCS1700 está conectado a A0 para leer el voltaje analógico del sensor. La línea de Grid Power tiene que pasar a través del orificio para medir la corriente. Usé un condensador de 0.01 uF para obtener la forma de lectura estable WCS1700.

D1 y D2 de NodeMCU para conectarse a IN0 e IN1 de los pines de entrada del relé.

Paso 2: Conexiones del motor de arranque DOL

Conexiones de arranque DOL
Conexiones de arranque DOL
Conexiones de arranque DOL
Conexiones de arranque DOL

Modifiqué el circuito de control del motor de arranque DOL para introducir otro conjunto de interruptores de ARRANQUE y DETENCIÓN. Este cambio no afectará la operación de arranque / parada manual y continúan funcionando como están.

Precaución !!!! Como el arrancador DOL es un dispositivo de alto voltaje, asegúrese de que el interruptor principal esté apagado antes de abrir la caja. El contacto directo con cables con corriente puede ser peligroso. Si no está seguro, solicite la ayuda de un electricista para realizar las conexiones

Usé un módulo de relé de 5 V de 2 canales como interruptor de ARRANQUE y PARADA. Estos relés serán controlados por ESP12.

El relé - 0 funcionará como interruptor de ARRANQUE - cableado como NO (normalmente abierto).

El relé-1 funcionará como interruptor de PARADA - cableado como NC (normalmente cerrado). El motor de arranque ya tendrá un cable que se conecta desde el contactor superior al NVC. Tendrá que quitarlo y reemplazarlo con cables de relé -1 como se muestra.

Asegúrese de que las conexiones entre el arrancador y los módulos de relé estén completamente aisladas por seguridad. Programé ESP para mantener ambos relés durante 2 segundos para emular la presión del botón START / STOP.

Paso 3: Cree una cuenta con Adafruit IO (io.adafruit.com)

Usé Adafruit io mqtt broker, que es de uso gratuito con pocas limitaciones, pero está bien para nuestro uso. Prefiero esto porque también lo usé en otros proyectos y encontré bastante confiable y también tiene muchas otras características como Dashboard con una buena GUI e incluso podemos usar disparadores. Para utilizar Adafruit io, debe crear una cuenta y anotar el nombre de usuario y la clave activa.

Paso 4: compile e instale el software

El código completo está disponible en el boceto. Debe abrir esto en Arduino IDE y realizar algunos cambios antes de compilar y cargar el firmware. Elija el tipo de placa como NodeMCU 1.0. La instalación de IDE y bibliotecas relacionadas no están dentro del alcance de esta documentación.

Modifique las siguientes líneas en el código como barbechos.

#define WLAN_SSID "xxx" // Su punto de acceso móvil WiFi SSID

#define WLAN_PASS "……" //

/ ************************* Configuración de Adafruit.io ******************** ************* /

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883 // use 8883 para SSL

#define AIO_USERNAME "xyz" // El nombre de usuario de su cuenta adafruit

#define AIO_KEY "abcd ……" // su clave activa…

Acerca de los feeds de MQTT: el dispositivo y el cliente (aplicación móvil) intercambian información a través de feeds de mensajes utilizando el submodelo pub a través del broker MQTT. Cualquier cliente o dispositivo para recibir un mensaje, tiene que suscribirse a un feed predefinido y tiene que utilizar el método de publicación para enviar un mensaje a un feed. Para nuestro proyecto, necesitamos alrededor de 5 alimentaciones. A continuación se muestra la explicación de cada uno de los feeds como se ve en el código y cómo funcionan.

Estado de la red: la disponibilidad de la fuente de alimentación de la red se publica en el feed /feeds/grid. Adafruit_MQTT_Publish grid_stat = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / grid");

0 indica que la fuente de alimentación no está disponible y 1 para la fuente de alimentación está disponible.

Estado del motor: el dispositivo publicará el estado del motor en la alimentación… / feeds / grid.

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

Valor de 0 para APAGADO y 1 para ENCENDIDO

Botón Motor ON: Esta alimentación se utiliza para recibir la solicitud de arranque del motor. El dispositivo se suscribirá a la fuente para recibir la solicitud de arranque del motor con valor = 1 y utilizará la misma fuente para publicar el mensaje de reconocimiento como 0. De esa manera, podemos confirmar que el dispositivo recibió realmente el mensaje de solicitud de inicio.

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

Botón de apagado del motor:

Similar a la solicitud de inicio, esta alimentación se utiliza para recibir la solicitud de parada del motor. El dispositivo se suscribirá a la fuente para recibir la solicitud de detención con valor = 1 y utilizará la misma fuente para publicar el mensaje de confirmación como 0.

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

Conexión:

Este es un feed especial con la opción de "última voluntad" habilitada. Cuando el dispositivo funciona bien en cada intervalo fijo, publicará connection = 1 para decirle al usuario que todo está bien. En caso de que el sistema se caiga o se pierda la conexión, el dispositivo no podrá comunicarse con el corredor. En tales casos, el propio agente de MQTT publicará en el feed como connection = 0 para que el usuario sepa que algo salió mal y que el dispositivo no es accesible a través de Internet. Tenemos que ir físicamente y revisar el dispositivo. El código es muy simple. Consulte la documentación de MQTT para obtener más detalles sobre cómo funciona “Last Will”.

si (itr <= 0)

{

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

itr = CON_LIVE_ITR;

}

El resto del código se explica por sí mismo y no se requieren modificaciones. No dudes en comentar en caso de que necesites más información.

Paso 5: Instale y configure la aplicación MQTT Dash en su móvil

Instale y configure la aplicación MQTT Dash en su móvil
Instale y configure la aplicación MQTT Dash en su móvil
Instale y configure la aplicación MQTT Dash en su móvil
Instale y configure la aplicación MQTT Dash en su móvil
Instale y configure la aplicación MQTT Dash en su móvil
Instale y configure la aplicación MQTT Dash en su móvil
  1. Instale MQTT Dash en su teléfono Android y abra la aplicación
  2. Haga clic en el icono + en la esquina superior derecha para agregar un dispositivo.
  3. Como se muestra en la primera imagen de arriba, dé un nombre a su dispositivo, diga "MyFarm-IPSet". Campo de dirección como io.adafruit.com y puerto como 1883, el nombre de usuario debe ser su nombre de usuario de adafruit y la contraseña debe ser su clave activa de adafruit. Deje el resto de los campos como están. Por último, haga clic en guardar.
  4. Has creado tu dispositivo. Ahora haga clic en él para agregarle un panel de control.
  5. Haga clic en + y seleccione el tipo como interruptor / botón. Como se muestra arriba, ingrese sys en el campo de nombre. e ingrese el nombre de la fuente en el campo del tema. cada feed debe comenzar con el nombre de usuario / feeds /. para esto nosotros / feeds / conexión. Asegúrese de que Habilitar publicación esté deshabilitado. Al hacer clic en el ícono para mostrar, puede elegir el tipo de ícono que desea que se vea en el tablero. Para el valor 1 seleccione uno de los colores (digamos verde) y para el valor 0 seleccione el color como gris o rojo. Finalmente, haga clic en guardar en la esquina superior derecha. De manera similar, cree dos iconos más, uno para Grid con nombre de usuario / feeds / grid como tema y Motor con nombre de usuario / feeds / motor. Asegúrese de que Habilitar publicación esté deshabilitado.
  6. Por último, cree el botón Motor ON. De nuevo es lo mismo que el tipo que el interruptor / botón. El tema debe ser / feeds / motor_on y asegurarse de que Habilitar publicación esté habilitado esta vez y QOS = 1. De manera similar, cree otro botón para Motor OFF. El tema debería ser / feeeds / motor_off.

Paso 6: Último paso:-) Prueba y ajuste

  1. Para estar seguro, primero debe probar el dispositivo para sus operaciones de ARRANQUE y DETENCIÓN antes de conectar los relés al arrancador DOL. Habilite Hotspot en el móvil con Internet habilitado. Conecte la computadora portátil que tiene un entorno de desarrollo directamente al puerto USB NodeMCU con otro cargador conectado al TP4056 al mismo tiempo. Si el dispositivo está conectado correctamente a Internet, debería ver 1 dispositivo conectado al punto de acceso en el teléfono inteligente.
  2. En el otro teléfono inteligente donde instaló MQTT Dash, abra el panel de la aplicación. Debería ver que el ícono NET en verde y el ícono Grid también en verde con sus valores como 1. El ícono del motor debe mostrarse como motor apagado con valor como 0.
  3. Al hacer clic en el botón Motor ON, el relé de arranque debe hacer dos sonidos de clic en un intervalo de dos segundos. Del mismo modo, el botón Motor OFF también.
  4. Por seguridad, apague ahora el suministro principal al arrancador DOL y conecte los relés al arrancador DOL como se muestra en el paso 2 anterior. Asegúrese de que el motor esté apagado. Presione el botón de reinicio en NodeMCU. Desde la salida del monitor en serie, puede ver declaraciones de depuración que imprimen valores del sensor WC1700, delta y la corriente calculada en la bobina. Con el motor en estado apagado y "#define WCS1700_CONST 15", el maxCur debe ser menor que 2 de manera consistente. Si muestra más de 2, intente con valores más altos de WCS1700_CONST. Cada vez tendrá que volver a compilar el código y cargar el firmware.
  5. Ahora encienda el motor y busque las lecturas actuales nuevamente. Deje el motor encendido durante unos 10-15 minutos y anote la lectura de corriente estable. La corriente puede variar entre 10 y 20 amperios aproximadamente y no es necesario que sea precisa.
  6. Regrese al código y configure "#define MIN_CURRENT X. Donde X es el 40 por ciento de la corriente máxima aproximada al valor numérico. En mi caso, configuro MIN_CURRENT en 5. Compile y vuelva a cargar el firmware en NodeMCU.
  7. Retire el cable USB de NodeMCU. Apague y encienda el dispositivo con el cargador USB conectado al TP4056. Al hacer clic en el botón Motor ON en la aplicación móvil, debería arrancar el motor. Una vez que el motor está encendido, el estado del motor debe reflejarse en el tablero de la aplicación como ENCENDIDO. Hacer clic en el botón de parada debería detener el motor.

Disfrutar !!!!

Recomendado: