Segunda parte de nuestro tutorial “por entregas” sobre cómo construir desde la nada un multisensor de viento, lluvia y luminosidad con vistas a su integración en el controlador domótico eedomus.
En la primera parte del tutorial, os describí los elementos que íbamos a necesitar para construir el sensor. Hoy, en esta nueva entrega, vamos a hablar del modo de funcionamiento del anemómetro y voy a describiros de forma detallada la conexión de los distintos sensores a la Raspberry Pi.
El anemómetro
Merece la pena dedicar unas líneas al funcionamiento interno del anemómetro. En el eje al que están sujetas las tres cazoletas que lo hacen girar con el viento, hay un imán que al girar pasa delante de un pequeño interruptor magnético de lengüeta (“reed switch”) que, estando normalmente abierto, se cierra cuando pasa el imán por delante (o puede ser al revés: estando normalmente cerrado, se abre por efecto del campo magnético que crea el imán al pasar por delante).
El resultado es que, en cada vuelta del eje, el interruptor se cierra (o se abre) dos veces. En la figura he representado el interruptor y el imán. Si además hacemos un pequeño circuito como el representado en esa figura, cuando el interruptor está abierto, la tensión en el punto Va es de 3,3 voltios por no circular corriente por la resistencia R (llamada de “pull-up” o de referencia). Cada vez que el interruptor se cierra, circula corriente por el circuito, cae tensión en la resistencia R y el punto Va tiene una tensión de 0 voltios. Si representamos la tensión Va frente al tiempo, obtenemos un tren de pulsos como el que se muestra en el gráfico, donde hemos supuesto que el anemómetro ha tardado un segundo en girar una vuelta.
Nótese que, para tener una referencia, hemos supuesto que el interruptor es del tipo NO (normalmente abierto). Esto ha dado lugar a dos pulsos en ese tiempo. Nótese que si el interruptor fuese del tipo NC (normalmente cerrado), los pulsos se invertirían: donde el pulso está a 0 voltios estaría a 3,3 voltios y viceversa, pero serían igualmente dos en cada vuelta.
El programa tendrá que contar el número de pulsos que se producen en un tiempo determinado. Veremos después que el programa contará transiciones de bajada (o de subida) en la tensión Va, valores que coinciden (cada pulso tiene una transición de bajada).
Y ahora ¿cómo convertimos ese número en una velocidad de viento? Si, por ejemplo, contamos N pulsos en un segundo, se corresponden con N/2 vueltas por segundo. Y como el radio de las cazoletas del anemómetro es de 4 cm, ese contador de N se traduce en:
o bien
Este valor, aunque es el que emplearemos, no deja de ser una aproximación, ya que solamente hemos considerado que el viento empuja en cada instante las cazoletas que estén a su favor, despreciando el efecto de frenado en las demás, que giran contra el viento en ese instante. En definitiva, la velocidad real del viento será superior a la obtenida con esta fórmula —siendo su obtención exacta un problema complejo de aerodinámica—. Nosotros podríamos obtener una aproximación más ajustada utilizando un factor corrector en la fórmula:
aunque para obtenerlo necesitaríamos colocar el anemómetro junto a otro bien calibrado y a partir de lecturas simultáneas de ambos obtener el valor necesario para el factor corrector. Como no necesitamos una lectura precisa de la velocidad, sino tener una referencia para recoger los toldos, nos quedaremos con la aproximación dada, sin factor de corrección, y de forma empírica determinaremos a partir de qué velocidad queremos recoger los toldos.
Conexión de los sensores a la Raspberry Pi
Describamos ahora el puerto de entradas/salidas de la Raspberry Pi, que se muestra en la figura. Puede observarse que hay unos pocos “pines” con la tensión de alimentación de la Raspberry Pi, 5 voltios (pines 2 y 4), con la tensión de referencia de 1 de los circuitos digitales, 3,3 voltios (pines 1 y 17) o con la tensión de referencia de 0, 0 voltios, que además tiene la función de masa (GND) de la alimentación (pines 6, 9, 14, 20, 25, 30, 34 y 39). El resto de los pines pueden configurarse por software como entradas o como salidas, pudiendo algunos de ellos tener asignadas otras funciones específicas: por ejemplo, los pines 3 y 5 se emplean para establecer el bus I²C que necesitaremos para el sensor de luminosidad. En el esquema de la figura se ve que algunos pines tienen varias nomenclaturas. Por ejemplo, el pin 29 también se denomina BCM 5 o GPIO 5. Esto habrá que tenerlo en cuenta después en la programación, ya que la librería que usaremos permite referirnos a un pin por una denominación u otra.
Es importante destacar que los pines que se configuren como entradas (o como salidas) tienen la referencia de 1 a 3,3 voltios y la de 0 a 0 voltios, aunque el dispositivo se alimente a 5 voltios. ¡Cuidado con las conexiones! El conectar un pin configurado como entrada directamente a 5 voltios podría destruir nuestra Raspberry Pi.
Conexión del anemómetro
El anemómetro lo conectaremos según el esquema mostrado anteriormente. La tensión de referencia de 3,3 voltios la tomamos del pin 17, el punto Va lo conectaremos al pin 29 y la referencia de 0 voltios (GND) del pin 25. En la figura mostramos el esquema eléctrico de las conexiones.
Conexión del módulo y la placa de lluvia
La placa detectora de lluvia se conecta mediante dos cables al módulo de lluvia (pines + y -) que, a su vez, se debe conectar a la Raspberry Pi mediante tres cables: alimentación a 3,3 voltios (pin Vcc), masa (y referencia de 0 voltios, pin GND) y señal de lluvia (pin D0), que está a referencia 1 si la placa no detecta lluvia y 0 si lo hace. El pin A0, que proporciona una señal analógica, no lo usaremos. Las figuras ilustran los pines de la placa y del módulo, y cómo deben hacerse las conexiones entre sí y con la Raspberry Pi.
Conectaremos la alimentación (Vcc) del módulo al pin 1 de la Raspberry Pi, el pin de masa (GND) del módulo al pin 14 de la Raspberry Pi y el pin de datos (D0) al pin 11. Los dos pines de salida del módulo de lluvia a la placa de lluvia se conectan a los dos pines de esta última. Aunque están marcados con + y – en la figura, en realidad no tienen polaridad. Se marcan únicamente por el hecho de que el pin – del módulo está conectado internamente al pin GND.
Conexión del sensor de luminosidad
El sensor de luminosidad requiere cuatro cables para su conexión con la Raspberry Pi. Conectaremos la alimentación (Vcc) del módulo al pin 1 de la Raspberry Pi, el pin de masa (GND) del sensor al pin 9 de la Raspberry Pi y los dos pines del bus I²C (SDA y SCL) a los pines con esa función en la Raspberry Pi (3 y 5 respectivamente). El esquema eléctrico se muestra en la figura.
Nótese que hemos seleccionado diferentes pines de masa (GND) para los diferentes sensores, con el fin de independizar las conexiones. Sin embargo, para el caso de la tensión de referencia de 3,3 voltios, como necesitamos tres conexiones y la Raspberry Pi solamente tiene dos, los dos últimos sensores comparten el pin 1 de ésta.
Indicaciones sobre el conexionado
Las conexiones pueden hacerse de varias formas. Si se tiene una Raspberry Pi Zero, los cables pueden soldarse directamente a la placa, con lo que nos ahorramos las 40 soldaduras necesarias para instalar el conector de 40 pines que viene con el dispositivo. Yo he preferido soldar el conector y utilizar cables con terminales Dupont en sus extremos para poder montar y desmontar el conjunto. En algunos casos, para las placas de los sensores de lluvia y luminosidad, he reutilizado conectores de ordenadores antiguos que tienen 4 de estos terminales.
La soldadura del conector a la Raspberry Pi hay que hacerla con mucho cuidado (todas las soldaduras en general). Si no tenéis mucha experiencia, hay varios vídeos y tutoriales disponibles. Aquí os dejo el enlace a uno de ellos.
Hay muchas formas de realizar la instalación física y el acabado del conjunto, dependiendo de dónde vayan a estar situados, de cómo se vayan a alimentar y de lo detallista que sea uno. Incluyo algunas fotos de la realización que he hecho por si os sirve de referencia.
Sensor de lluvia y anemómetro y sensor de luminosidad
Sensor de luminosidad y conjunto instalado
Detalles del conexionado de la Raspberry Pi Zero
La semana que viene, tercera y última entrega del tutorial, en la que hablaremos de la programación. ¡Os espero!
El post Cómo crear desde cero un multisensor de viento, lluvia y luminosidad para eedomus (Parte II) aparece primero en Domótica Doméstica.