Tabla de contenido:

Monitoreo de planta con alerta SMS: 5 pasos
Monitoreo de planta con alerta SMS: 5 pasos

Video: Monitoreo de planta con alerta SMS: 5 pasos

Video: Monitoreo de planta con alerta SMS: 5 pasos
Video: CREACIÓN Y MONITOREO de plantas fotovoltaicas con EMA Manager de #Apsystems 2024, Mes de julio
Anonim
Monitoreo de planta con alerta SMS
Monitoreo de planta con alerta SMS

Aquí creo Monitoreo de planta con alerta SMS. No se requiere servidor para este sistema de alerta. Es un proyecto muy económico y confiable.

Paso 1: diagrama de bloques del sistema

Diagrama de bloques del sistema
Diagrama de bloques del sistema

En los invernaderos de hoy, se requieren muchas mediciones de parámetros

monitorear y controlar la buena calidad y productividad de las plantas. Pero para obtener los resultados deseados hay algunos factores muy importantes que entran en juego como la temperatura, la humedad, la luz y el buen suelo, que son necesarios para un mejor crecimiento de la planta. Teniendo estos parámetros en mente, he construido un Sistema de Monitoreo Automático de Plantas sobre un módulo GSM usando Arduino. Este sistema es muy eficaz para cultivar plantas de buena calidad. La otra parte importante de este proyecto es que es completamente automático y funciona en baja tensión como; Suministro de 5-12 V CC.

Hoy en día, el módulo GSM se usa ampliamente para enviar el estado de SMS de cualquier tipo de datos. Aquí, en este proyecto, mediante el uso del módulo GSM SIM900A, podemos mantener información sobre los efectos del clima en las plantas. El sistema también deberá demostrar los cambios climáticos que afectan a la planta en su productividad y calidad, etc. El propósito principal de este proyecto es construir un Monitoreo Automático de Planta en el cual el módulo GSM envía la información sobre Temperatura, Humedad, Intensidad de Luz, Suelo humedad.

Como soy ciudadano indio, usé el módulo SIM900A (A es sinónimo de red asiática), pero puede usar diferentes tipos de módulo SIM según su país. Los códigos AT pueden diferir.

Paso 2: Detalle del componente

Detalle del componente
Detalle del componente
Detalle del componente
Detalle del componente
Detalle del componente
Detalle del componente

------------------ Mido cuatro tipos de parámetros, que van

para discutir a continuación: ------------------

Temperatura y humedad

El sensor DHT11 se utiliza para detectar la temperatura y la humedad. Cuando la temperatura y la humedad son altas, la raíz de las plantas se daña y la planta no crece bien.

Intensidad de luz

La intensidad de la luz es un factor importante para el crecimiento de las plantas. Para detectar la intensidad de la luz se utiliza LDR (resistencia dependiente de la luz). La intensidad de la luz se mide en LUX y, por lo tanto, para la demostración se utiliza luz de 100 LUX como nivel definido o umbral.

La humedad del suelo

La humedad del suelo es muy importante para el buen crecimiento de las plantas. Aquí el sensor de suelo se utiliza para medir el contenido de humedad en el suelo. Con este sensor podemos medir los datos del suelo en ambos sentidos, tanto analógicos como digitales.

Notificación por SMS:

Cuando el valor de cualquiera de los parámetros anteriores se excede de un nivel definido o nivel crítico, el sistema envía automáticamente un SMS al propietario o al operador con información de los parámetros relacionados y cuando el valor se encuentra en el rango normal o por debajo del nivel definido nuevamente, el sistema automáticamente enviar SMS al propietario o al operador con información de datos relacionados.

La notificación se envía solo una vez hasta que la condición no cambie, por lo que el propietario u operador no recibe SMS con frecuencia. Por lo tanto, se requiere un paquete de SMS más bajo.

Paso 3: diagrama de circuito

Diagrama de circuito
Diagrama de circuito

Todas estas piezas están fácilmente disponibles en cualquier sitio de compras en línea.

o con un conocido distribuidor de repuestos electrónicos. Todas las hojas de datos de los componentes están disponibles en la web. Si tiene alguna dificultad, no dude en ponerse en contacto con mi correo.

Paso 4: archivo de código y video de trabajo

Vídeo final de trabajo del proyecto

Paso 5: Código de programa

#incluir

#incluir

LiquidCrystal lcd (2, 3, 4, 5, 6, 7);

dht DHT; #define dht_dpin A1 #define LUX A0 #define suelo A3

flotador voltio, lux, valor; int valor_salida; int temperatura, humedad; int lightflag = 0; int humflag = 0; int bandera de suelo = 0; int tempflag = 0; int check; int prueba, prueba1; grado de byte [8] = {0b00011, 0b00011, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000};

configuración vacía ()

{Serial.begin (9600); // Inicializar serial para comunicarse con GSM Modem lcd.begin (16, 2); pinMode (suelo, ENTRADA); lcd.createChar (1, grado); lcd.setCursor (0, 0); lcd.print ("Sanidad vegetal"); lcd.setCursor (0, 1); lcd.print ("Monitoreo"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("PROYECTO AGRI"); lcd.setCursor (0, 1); lcd.print ("Por S K CHHAYA"); retraso (1000); lcd.clear (); } bucle vacío () {valor_salida = lectura_análoga (suelo); valor_salida = mapa (valor_salida, 550, 0, 0, 100); valor = analogRead (LUX); voltio = (valor / 1023.0) * 5; lux = ((2500 / voltio) - 500) / 3,3; retraso (10000); // Dar suficiente tiempo para que GSM se registre en la red DHT.read11 (dht_dpin); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Temp"); lcd.setCursor (0, 1); lcd.print (temperatura = DHT.temperatura); // Datos temporales en LCD lcd.write (1); lcd.print ("C"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Humedad"); lcd.setCursor (0, 1); lcd.print (humedad = DHT.humedad); // Datos de humedad en LCD lcd.print ("%"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Claro"); lcd.setCursor (0, 1); lcd.print (lux); // Datos de luz en LCD lcd.print ("LUM"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Humedad"); lcd.setCursor (0, 1); lcd.print (valor_salida); // Datos del suelo en LCD lcd.print ("%"); retraso (1000); lcd.clear ();

si (temperatura 40) {SendSMS (); // SMS para temperatura alta} if (humedad 40) {SendSMS2 (); // SMS para Humedad alta} if (lux 100) {SendSMS4 (); // SMS para Luz alta} if (output_value == 950) {SendSMS7 (); // SMS para suelo seco} else if (output_value! = 950) {SendSMS6 (); // SMS para suelo húmedo}} void SendSMS () {if (tempflag == 0) {Serial.println ("AT + CMGF = 1"); retraso (500); Serial.println ("AT + CMGS = \" + 919979897404 / "\ r"); retraso (500); Serial.print ("Temp alta,"); Serial.print ("Temp"); Serial.print (temperatura); Serial.println ("grado C"); Serial.println ((carácter) 26); lcd.setCursor (0, 0); lcd.print ("Temp alta"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Temperatura"); lcd.setCursor (0, 1); lcd.print (temperatura); lcd.write (1); lcd.print ("C"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Envío de SMS"); retraso (1000); lcd.clear (); tempflag = 1; comprobar = 0; prueba = 0; retraso (10); }} void SendSMS1 () {if (tempflag == 1) {Serial.println ("AT + CMGF = 1"); retraso (500); Serial.println ("AT + CMGS = \" + 919979897404 / "\ r"); retraso (500); Serial.print ("Temp baja,"); Serial.print ("Temp"); Serial.print (temperatura); Serial.println ("grado C"); Serial.println ((char) 26); lcd.setCursor (0, 0); lcd.print ("Temp baja"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Temperatura"); lcd.setCursor (0, 1); lcd.print (temperatura); lcd.write (1); lcd.print ("C"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Envío de SMS"); retraso (1000); lcd.clear (); tempflag = 0; comprobar = 0; prueba = 0; retraso (10); }} void SendSMS2 () {if (humflag == 0) {Serial.println ("AT + CMGF = 1"); retraso (500); Serial.println ("AT + CMGS = \" + 919979897404 / "\ r"); retraso (500); Serial.print ("Humedad alta"); Serial.print (humedad); Serial.println ("%"); Serial.println ((carácter) 26); lcd.setCursor (0, 0); lcd.print ("Humedad alta"); retraso (1000); lcd.setCursor (0, 1); lcd.print ("Humedad"); lcd.print (humedad); lcd.print ("%"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Envío de SMS"); retraso (1000); lcd.clear (); humflag = 1; comprobar = 0; prueba = 0; retraso (10); }}

void SendSMS3 () {if (humflag == 1) {Serial.println ("AT + CMGF = 1"); retraso (500); Serial.println ("AT + CMGS = \" + 919979897404 / "\ r"); retraso (500); Serial.print ("Humedad baja"); Serial.print ("Humedad"); Serial.print (humedad); Serial.println ("%"); Serial.println ((carácter) 26); lcd.setCursor (0, 0); lcd.print ("Humedad baja"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Humedad"); lcd.setCursor (0, 1); lcd.print (humedad); lcd.print ("%"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Envío de SMS"); retraso (1000); lcd.clear (); humflag = 0; comprobar = 0; prueba = 0; retraso (10); }} void SendSMS4 () {if (lightflag == 0) {Serial.println ("AT + CMGF = 1"); // Para enviar SMS en modo de texto, retraso (500); Serial.println ("AT + CMGS = \" + 919979897404 / "\ r"); // Retraso del cambio al número de teléfono de destino (500); Serial.print ("Buena LUZ"); Serial.print ("Intensidad"); Serial.print (lux); Serial.println ("LUX"); Serial.println ((carácter) 26); // el carácter de parada Ctrl + Z lcd.setCursor (0, 0); lcd.print ("Buena luz"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Intensidad"); lcd.setCursor (0, 1); lcd.print (lux); lcd.print ("LUX"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Envío de SMS"); retraso (1000); lcd.clear (); bandera de luz = 1; comprobar = 0; prueba = 0; retraso (10); }} void SendSMS5 () {if (lightflag == 1) {Serial.println ("AT + CMGF = 1"); retraso (500); Serial.println ("AT + CMGS = \" + 919979897404 / "\ r"); retraso (500); Serial.print ("LUZ BAJA,"); Serial.print ("Intensidad"); Serial.print (lux); Serial.println ("LUX"); Serial.println ((carácter) 26); lcd.setCursor (0, 0); lcd.print ("Poca luz"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Intensidad"); lcd.setCursor (0, 1); lcd.print (lux); lcd.print ("LUX"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Envío de SMS"); retraso (1000); lcd.clear (); lightflag = 0; comprobar = 0; prueba = 0; retraso (10); }} void SendSMS6 () {if (bandera de suelo == 0) {Serial.println ("AT + CMGF = 1"); retraso (500); Serial.println ("AT + CMGS = \" + 919979897404 / "\ r"); retraso (500); Serial.print ("Suelo seco"); Serial.print ("Humedad"); Serial.print (valor_salida); Serial.println ("%"); Serial.println ((char) 26); lcd.setCursor (0, 0); lcd.print ("suelo seco"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Humedad"); lcd.setCursor (0, 1); lcd.print (valor_salida); lcd.print ("%"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Envío de SMS"); retraso (1000); lcd.clear (); bandera de suelo = 1; comprobar = 0; prueba = 0; retraso (10); }} void SendSMS7 () {if (bandera de suelo == 1) {Serial.println ("AT + CMGF = 1"); retraso (500); Serial.println ("AT + CMGS = \" + 919979897404 / "\ r"); retraso (500); Serial.print ("Suelo húmedo"); Serial.print ("Humedad"); Serial.print (valor_salida); Serial.println ("%"); Serial.println ((char) 26); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Suelo húmedo"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Humedad"); lcd.setCursor (0, 1); lcd.print (valor_salida); lcd.print ("%"); retraso (1000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Envío de SMS"); retraso (1000); lcd.clear (); bandera del suelo = 0; comprobar = 0; prueba = 0; retraso (10); }}

Recomendado: