- Componentes requeridos para el proyecto del sistema de riego de la planta Arduino
- Explicación del circuito:
- Explicación de trabajo:
- Explicación de programación:
Siempre que salimos de la ciudad por unos días, siempre solíamos preocuparnos por nuestras plantas, ya que necesitan agua con regularidad. Entonces, aquí estamos creando un sistema automático de riego de plantas usando Arduino, que automáticamente proporciona agua a sus plantas y lo mantiene actualizado enviando un mensaje a su teléfono celular.
En este sistema de riego de plantas, el sensor de humedad del suelo verifica el nivel de humedad en el suelo y, si el nivel de humedad es bajo, Arduino enciende una bomba de agua para proporcionar agua a la planta. La bomba de agua se apaga automáticamente cuando el sistema encuentra suficiente humedad en el suelo. Siempre que el sistema enciende o apaga la bomba, se envía un mensaje al usuario a través del módulo GSM, actualizando el estado de la bomba de agua y la humedad del suelo. Este sistema es muy útil en granjas, jardines, hogar, etc. Este sistema está completamente automatizado y no requiere ninguna intervención humana.
Componentes requeridos para el proyecto del sistema de riego de la planta Arduino
- Arduino Uno
- Módulo GSM
- Transistor BC547 (2)
- Cables de conexión
- LCD 16x2 (opcional)
- Fuente de alimentación 12v 1A
- Relé 12v
- Bomba enfriador de agua
- Sensor de humedad del suelo
- Resistencias (1k, 10k)
- Resistencia variable (10k, 100k)
- Conector terminal
- Regulador de voltaje IC LM317
Módulo GSM:
Aquí hemos utilizado el módulo GSM TTL SIM800. El SIM800 es un módulo GSM / GPRS cuatribanda completo que el cliente o aficionado puede integrar fácilmente. El módulo GSM SIM900 proporciona una interfaz estándar de la industria; el SIM800 ofrece un rendimiento GSM / GPRS 850/900/1800/1900 MHz para voz, SMS y datos con bajo consumo de energía. El diseño de este módulo GSM SIM800 es delgado y compacto. Está fácilmente disponible en el mercado o en línea en eBay.
- Módulo GSM / GPRS cuatribanda de pequeño tamaño.
- GPRS habilitado
- Salida TTL
Obtenga más información sobre el módulo GSM y los comandos AT aquí. También consulte nuestros diversos proyectos que utilizan GSM y Arduino para comprender correctamente su interfaz.
Explicación del circuito:
En este sistema de riego de plantas, hemos utilizado una sonda de sensor de humedad del suelo hecha en casa para detectar el nivel de humedad del suelo. Para hacer la sonda, hemos cortado y grabado una placa revestida de cobre de acuerdo con la imagen que se muestra a continuación. Un lado de la sonda está conectado directamente a Vcc y el otro terminal de la sonda va a la base del transistor BC547. Un potenciómetro está conectado a la base del transistor para ajustar la sensibilidad del sensor.
Arduino se utiliza para controlar todo el proceso de este sistema de riego automático de plantas. La salida del circuito del sensor de suelo está conectada directamente al pin digital D7 de Arduino. Se utiliza un LED en el circuito del sensor, el estado de este LED encendido indica la presencia de humedad en el suelo y el estado de apagado indica la ausencia de humedad en el suelo.
El módulo GSM se utiliza para enviar SMS al usuario. Aquí hemos utilizado el módulo GSM TTL SIM800, que da y recibe lógica TTL directamente (el usuario puede utilizar cualquier módulo GSM). Se utiliza un regulador de voltaje LM317 para alimentar el módulo GSM SIM800. El LM317 es muy sensible al voltaje nominal y se recomienda leer su hoja de datos antes de su uso. Su voltaje de operación es de 3.8v a 4.2v (prefiera 3.8v para operarlo). A continuación se muestra el diagrama de circuito de la fuente de alimentación proporcionado al módulo GSM TTL sim800:
Si el usuario desea usar el módulo TTL SIM900, entonces debe usar 5V y si el usuario desea usar el módulo SIM900, entonces aplique 12v en la ranura DC Jack de la placa.
Se utiliza un relé de 12V para controlar la pequeña bomba de agua de 220VAC. El relé es impulsado por un transistor BC547 que además está conectado al pin digital 11 de Arduino.
También se utiliza una pantalla LCD opcional para mostrar el estado y los mensajes. Los pines de control de LCD, RS y EN están conectados a los pines 14 y 15 de Arduino y los pines de datos de LCD D4-D7 están conectados directamente a los pines 16, 17, 18 y 19 de Arduino. La pantalla LCD se utiliza en modo de 4 bits y se maneja mediante la biblioteca LCD incorporada de Arduino.
A continuación se muestra el diagrama del circuito de este sistema de riego con arduino y sensor de humedad del suelo:
Explicación de trabajo:
El funcionamiento de este sistema automático de riego de plantas es bastante sencillo. En primer lugar, es un sistema completamente automatizado y no hay necesidad de mano de obra para controlar el sistema. Arduino se usa para controlar todo el proceso y el módulo GSM se usa para enviar mensajes de alerta al usuario en su teléfono celular.
Si hay humedad en el suelo, entonces hay conducción entre las dos sondas del sensor de humedad del suelo y, debido a esta conducción, el transistor Q2 permanece en estado activado / activado y el pin D7 de Arduino permanece bajo. Cuando Arduino lee la señal BAJA en D7, envía un SMS al usuario sobre “La humedad del suelo es normal. Motor apagado ”y la bomba de agua permanece en estado apagado.
Ahora, si no hay humedad en el suelo, el transistor Q2 se apaga y el pin D7 se pone alto. Luego, Arduino lee el Pin D7 y enciende el motor de agua y también envía un mensaje al usuario sobre “Se detectó baja humedad en el suelo. Motor encendido ”. El motor se apagará automáticamente cuando haya suficiente humedad en el suelo. Consulte el video y el código de demostración (que se encuentran al final) para comprender mejor el proceso de trabajo del proyecto.
Explicación de programación:
El código de este programa es fácilmente comprensible. En primer lugar, hemos incluido la biblioteca SoftwareSerial para hacer los pines 2 y 3 como Rx & Tx y también incluimos LiquidCrystal para LCD. Luego definimos algunas variables para motor, sensor de humedad del suelo, LED, etc.
#incluir
Luego, en la función de configuración vacía () , la comunicación en serie se inicializa a 9600 bps y se dan instrucciones a los distintos pines. Se llama a la función gsmInit para inicializar el módulo GSM.
Serial1.begin (9600); Serial.begin (9600); pinMode (led, SALIDA); pinMode (motor, SALIDA); pinMode (sensor, INPUT_PULLUP); lcd.print ("Irrigación con agua"); lcd.setCursor (4,1); retraso (2000); lcd.clear (); lcd.print ("Resumen de circuitos"); lcd.setCursor (0,1); lcd.print ("Le da la bienvenida"); retraso (2000); gsmInit ();
Luego, el sensor se lee en la función de bucle vacío () , y el motor se enciende o apaga de acuerdo con el estado del sensor y también se envía un SMS al usuario mediante la función sendSMS . Compruebe las diversas funciones en el código completo que se proporciona al final.
bucle vacío () {lcd.setCursor (0,0); lcd.print ("Modo automático"); if (digitalRead (sensor) == 1 && flag == 0) {delay (1000); if (digitalRead (sensor) == 1) {digitalWrite (led, HIGH); sendSMS ("Se detectó poca humedad en el suelo. Motor encendido"); lcd.begin (16,2); lcd.setCursor (0,1);…………………
Aquí la función gsmInit () es importante y a los usuarios les resulta difícil configurarla correctamente. Se utiliza para inicializar el módulo GSM, donde en primer lugar se comprueba si el módulo GSM está conectado o no enviando el comando 'AT' al módulo GSM. Si se recibe una respuesta OK, significa que está listo. El sistema sigue comprobando el módulo hasta que esté listo o hasta que se reciba "OK". Luego, ECHO se apaga enviando el comando ATE0; de lo contrario, el módulo GSM repetirá todos los comandos. Luego, finalmente, la disponibilidad de la red se verifica a través de 'AT + CPIN?' comando, si la tarjeta insertada es la tarjeta SIM y el PIN está presente, da la respuesta LISTO. Esto también se comprueba repetidamente hasta que se encuentra la red. Esto se puede entender claramente en el video a continuación.
vacío gsmInit () {lcd.clear (); lcd.print ("Módulo de búsqueda…"); booleano at_flag = 1; while (at_flag) {Serial1.println ("AT"); while (Serial1.available ()> 0) {if (Serial1.find ("OK")) at_flag = 0; } retraso (1000); }……………….
Entonces, con este sistema de riego automático, no necesita preocuparse por sus plantas cuando está fuera de su hogar. Se puede mejorar aún más para ser operado y monitoreado a través de Internet.