Ir al contenido principal

Breve Explicación Del Código

Pingüino es una plataforma similar a Arduino, por lo tanto el código creado en una plataforma puede adaptarse muy fácilmente para pasarlo a la otra, en pocas palabras un proyecto diseñado para Arduino puede implementarse en Pingüino o viceversa.

En primer lugar se declaran las variables o registros que almacenaran los valores entregados por los sensores y por el usuario, se usan nombres cortos porque mas adelante se "invocara" a estas variables, por ejemplo la variable H almacena el valor de humedad entregado por el sensor; HA, HB, HC, y HD almacenan el valor de humedad determinado para que la bomba se apague o se encienda, HR toma el valor de humedad de uno de los 4 cultivos, su valor ahora es el dato de referencia y se usa para compararlo con el que esta almacenado en H. En la siguiente imagen se puede ver la declaración de variables:



En la función setup() se realiza la configuración inicial para el pic, cuando se enciende, este es el primer código que se ejecuta, entre otras cosas se hace la asignación de pines (de entrada o salida) se inicializa el contenido de los registros, etc. en la siguiente imagen se puede ver un fragmento de esta función:



La función loop() es un bucle infinito que repetirá las instrucciones que se encuentren dentro una y otra y otra vez, en este caso solo se repite una vez ya que luego se ejecuta la función riego() esta última se repite infinitamente o hasta que el usuario la detenga; como se puede apreciar el la imagen cuando loop() se ejecuta se llama al menú y se despliegan las opciones para que el usuario pueda configurar el sistema, luego le muestra las opciones que eligió, asigna los respectivos valores de humedad y realiza otras acciones para que el sistema quede correctamente configurado.





En la imagen anterior aparece la función menu() la cual en primer lugar le pide al usuario escoger el tipo de cultivo que se desea regar, luego lee los valores recibidos y los guarda en un registro.

En el caso de seleccionarse el cultivo D, al usuario se le pide que modifique el nivel de humedad requerido para que se encienda la bomba de agua mediante las teclas A y B del teclado matricial.

 

En la función riego() se leen los datos enviados por el sensor de humedad y por el sensor de luz, los compara con los datos almacenados y con esta información se enciende o se apaga la bomba, adicionalmente, en la pantalla lcd se muestra los datos entregados por los sensores, es decir el nivel de humedad y si es de día o de noche, también se muestra el estado de la bomba, si se enciende o se apaga.





El código en si es algo complejo y tiene muchas otras cosas que debería mencionarse pero, en este blog se trata de describir su funcionamiento de la forma mas sencilla posible.

En youtube se ha subido un vídeo donde  puede ver el funcionamiento del circuito, aquí dejo el enlace: 

Comentarios

Entradas populares de este blog

Mejoras para una siguiente versión

Después de presentar el proyecto, algunas de las personas quienes lo miraron en funcionamiento, propusieron algunas mejoras entre ellas están:  * Que el sistema  active la bomba por unos minutos y lo apague por unos instantes para ahorrar energía. * Que el sistema le permita al usuario ingresar cualquier valor de humedad (245, 368, etc), pues por el momento solo acepta valores como 600,700,800. * Adaptar los valores entregados por el sensor de humedad, para que una humedad de 0 indique que el suelo este seco y que una humedad de 1023 indique que la tierra esta completamente mojada, en la versión actual dichos valores están invertidos, (1023 es seco y 0 es completamente mojado). * Equipar el sistema para que trabaje con energía solar. * Meter el sistema en una pequeña caja para mejorar su estética y para usar mejor el espacio. Estas son las mejoras propuestas, si alguien tiene una sugerencia o duda comenten, toda opinión cuenta!!!

Propuesta

En la agricultura actualmente se riegan los cultivos con sistemas analógicos, no  se le da un uso a la tecnología, no se tienen controles, solo se abre el grifo y se  deja que el agua fl uya, ni siquiera se tiene en cuenta el grado de humedad del suelo.  El cultivo se riega hasta que el agricultor piensa que es necesario. Además al no  tener un sistema de monitoreo se estaría desperdiciando demasiada agua, dado que  algunos cultivos requieren de ciertos niveles de humedad en su suelo, si dicho nivel  es mayor o menor al requerido puede traer problemas notorios en la cosecha. Al implementarse el sistema de riego inteligente, el agricultor realizará unas pequeñas  configuraciones y el sistema se encargará de regar de forma autónoma los  cultivos cada vez que estos lo requieran, de esta forma el usuario podrá dejar abierta la llave del grifo cuanto tiempo quiera pero el sistema hará un uso eficiente de este  preciado líquido....

Desarrollo Del Proyecto

Ya que el sistema que se requiere es algo complejo, en primer lugar se construye un diagrama de bloques para dividir el proyecto en partes mas pequeñas y así trabajar de forma más cómoda; Se dividió el sistema en 4 bloques: entradas, control, visualización de procesos y motor; El bloque de entradas recibe los datos enviados por el sensor de luz, el sensor de humedad y el teclado matricial, el bloque de control estaría conformado por el microcontrolador, el cual almacena los datos recibidos, evalúa los casos y controla los bloques de visualización de procesos y motor. El bloque de visualización de procesos despliega un menú para realizar ciertas configuraciones del sistema (mediante el teclado matricial) además muestra los valores que entregan los sensores. Por último, el módulo bloque del motor enciende o apaga la bomba de agua para que el cultivo sea regado cuando el nivel de humedad este por debajo del valor establecido. Inicialmente se diseñó el código para probar por separado...