Icono del sitio Home Assistant Fácil

#130 Monitorizar temperatura en invernaderos con Arduino y más preguntas

Hoy toca capítulo de preguntas de los oyentes. Voy a contestar 3 preguntas interesantes sobre cómo monitorizar temperatura y humedad en invernaderos, un sensor de ultrasonidos para medir distancias precisas y detectar pulsaciones en un pulsador.

Recuerda que si quieres que conteste a tus preguntas en el podcast las puedes enviar a través del formulario de contacto. Antes de preguntar asegúrate que has hecho una búsqueda en Internet.

Hay mucha gente trabajando con Arduino y seguro que alguien ha tenido tu mismo problema y ya está resuelto :)

Monitorizar temperatura y humedad en invernaderos

Juan Correa de Ambato Ecuador

Estimado Luis, un gusto saludarte, te felicito por todo lo que haces. Un favor, quisiera desarrollar un proyecto para las floricolas (invernaderos). Esas empresas tiene problemas en el tema de cultivo, no saben a qué temperatura pasan sus invernaderos en las noches, tema de humedad, etc, etc.

Quisiera encontrar una solución para esto. ¿Que me recomiendas?

Este proyecto puede tener diferentes soluciones y voy a ir enumerando cada una de ellas de más fácil a más difícil.

Con Arduino UNO o alguna placa parecida, que no tenga conexión a Internet podemos hacer un datalogger. Consiste en ir almacenando la información en una memoria para luego recuperar esa información e interpretarla.

Ya hablé de memoria de Arduino y cómo debíamos tratar este tema en un capítulo anterior. El principal problema es que la memoria es muy reducida y necesitamos una memoria externa. Existen componentes que nos permiten guardar datos en una tarjeta de memoria SD. Por menos de 2€ puedes encontrar un componente con esta capacidad.

Una segunda opción sería utilizar una placa con WiFi o poner un shield WiFi o Ethernet a un Arduino UNO o Arduino MEGA. Recomiendo una placa con WiFi integrada como Arduino MKR1000 o alguna basada en el ESP8266 o ESP32.

El mayor inconveniente que tienen estas placas es que tienes que tener un punto de acceso a Internet relativamente cerca para enviar los datos. Existe otra opción, crear una red local en el invernadero y con una Raspberry Pi almacenar los datos.

Lo puedes hacer fácilmente con el protocolo de comunicaciones MQTT y Node-RED.

La última opción sería utilizar una placa que conecte con redes LPWAN. Dependiendo de la cobertura que tengas en tu zona, deberás utilizar SigFox o LoRa.

Como ves, no hay una solución única para un proyecto, existen diferentes caminos y sólo depende de nosotros coger uno u otro.

Sensor para medir distancias precisas

Yrvin Pérez de Colombia

Consultarte si podrías darme una mano con este proyecto que estoy queriendo emprender. Lo que busco es PRECISIÓN con el sensor HC-SR04.

Quiero medir distancias de una forma en la que el margen de error sea mínimo, para calcular el nivel de combustible que tengo en un tanque dispensador. El alto del tanque es de 2,50 mts.

Leí que el rango del sensor mencionado es de un alcance de hasta 4 metros.

Lo que quiero hacer es tomar un valor en relación a una varilla con la que están midiendo el nivel de combustible de un tanque, yo quiero reemplazar esa varilla por el sensor y un microcontrolador, la forma en la que proceden es introducir la varilla se observa a cuantos centimetros esta el nivel de combustible y se tiene la relación de centímetros/litros( ESTOS YA ESTÁN HECHOS), con el sensor quiero determinar esos centímetros, pero el problema está en que la medición es muy INEXACTA con el sensor, si podrías brindarme una mano para poder calibrar de forma mucho más precisa el sensor en cuestión.

El sensor de ultrasonidos HC-SR04 lo he utilizado en varios proyectos. Uno de ellos es el que sirve para medir el nivel de agua en una cubeta o en algún recipiente. Cuando estuve trabajando con él, percibí que era muy impreciso.

Eso es debido a dos factores principalmente. El primero es al ruido inherente a la propia electrónica. Todos los componentes tienen un factor error por tratarse de algo fabricado por el ser humano. Nada es perfecto y todos los componentes electrónicos tienen algún tipo de error que producen ruido eléctrico.

El segundo factor es debido a cómo se transmite el sonido por el aire. Al tratarse de una onda, esta rebota con paredes y objetos que se encuentra por el camino. Esto produce reflexiones que pueden ser detectadas por el ECHO del sensor de ultrasonidos.

Por lo tanto es importante hacer varias cosas. Por un lado tener un sensor de buena calidad. El HC-SR04 es un sensor muy económico pero no nos da buenos resultados. Tu mismo lo has podido comprobar.

Te recomiendo que eches un vistazo a la marca Maxbotix. Tiene una amplia gama de sensores de todo tipo y para muchas situaciones. Al igual que no podemos utilizar un sensor de temperatura para cualquier situación, con los sensores de ultrasonidos ocurre lo mismo.

Si quieres tener resultados de calidad te recomiendo esta marca y que busques el que mejor se adecúa a tu situación.

Aún así, con el HC-SR04 podemos hacer varias cosas para aumentar la precisión. Lo primero es hacer una media o mediana de los datos que vayas obteniendo. Una aclaración, la media se calcula sumando todos los valores y dividiendo por el número de valores que has sumado.

La mediana se calcula ordenando los valores de menor a mayor y quedándote con el valor que se quede en el medio. ¿Cuál elegir? Depende de cada situación, yo recomiendo en este caso utilizar la mediana aunque con la media también funcionaría.

Puedes utilizar esta librería que a mi me ha dado muy buen resultado, RunningAverage.

Otra acción interesante sería poner algún tipo de tubo para direccionar las ondas ultrasónicas. Yo lo he probado en alguna ocasión pero no puedo garantizar que esto funcione correctamente. La marca Maxbotix que he recomendado antes, tiene algunos sensores de ultrasonidos que utilizan ese sistema.

Detectar 5 pulsaciones con Arduino

Paco Díaz de Madrid

Buenos días Luis y felicidades por tu trabajo, ¿Cómo sería el código si quisiéramos que tras 5 pulsaciones, deje de encenderse el led? Saludos y Gracias.

Como ocurre con casi todo en la programación hay varios caminos que puedes tomar. El más sencillo, bajo mi punto de vista, es utilizar interrupciones. Ya hablé en su día de las interrupciones en Arduino y cómo nos pueden ayudar a controlar nuestro programa.

Una interrupción lo que hace es parar la ejecución del programa, esté donde esté, y ejecuta una parte del código. Normalmente este código está en una función a parte que se llama ISR. Una vez termina, sigue con la ejecución por donde se había quedado.

Sólo tienes que tener un contador que vaya sumando cuántas veces se ha pulsado el pulsador o interruptor. Esta variable tiene que ser marcada como volatile para que podamos tener acceso desde la función ISR.

Se trata de una directiva de compilación que le dice al compilador que esa variable será accesible desde la memoria RAM y no desde el registro de almacenamiento. Si no lo hacemos así, nos dará un error al compilar debido al ámbito de la variable.

Ojo, cuando se ejecuta la función ISR lo primero que debemos hacer es deshabilitar las interrupciones para que no detecte falsas pulsaciones.

Esto lo hacemos con la función detachInterrupt() a la que pasamos como argumento el número de pin donde tenemos conectado el pulsador.

Otra opción, algo más compleja, es utilizar una librería que hace todo esto por ti. Es algo más complejo si no estás familiarizado con las librerías y su uso. La más famosa es OneButton. Está muy bien documentada y es sencilla de usar.

Puede detectar varios estados como cuando lo dejas pulsado, cuando levantas el dedo, por tiempo y unos cuantos estados más. Mira la documentación para profundizar más en todo esto. No descarto en un futuro escribir un artículos sobre este tipo de librerías.

Conclusiones

Quizá una de las conclusiones que podemos sacar de este capítulo es que no hay un camino único para hacer un proyecto. Existen varias opciones y elegir una u otra depende de nosotros y del material que tengamos en nuestra casa o taller.

También hemos podido ver como un componente puede variar dependiendo de la calidad de fabricación. En ocasiones, hay que gastar algo más de dinero si queremos precisión para nuestros proyectos. Este es el caso de los sensores de ultrasonidos.

Lo importante es ponerse en acción y empezar a practicar lo antes posible. Sólo así conseguiremos aprender a base de intentar realizar proyectos.

Si tienes alguna duda o cuestión puedes dejarla aquí abajo en los comentarios de este capítulo.


Puedes escuchar este programa en,  iVooxiTunes y en Spreaker. Si lo haces, por favor valora y comenta, así podremos llegar a más gente.

Salir de la versión móvil