Te mostraremos como a través de la tarjeta de desarrollo Arduino UNO puedes obtener los datos enviados por el sensor de velocidad de viento: Anemómetro IP65.
El Anemómetro es un instrumento de medición de velocidad del viento, muy útil en el invernaderos, teleféricos o estaciones meteorológicas caseras o de investigación.
Específicamente el modelo con el que trabajaremos pertenece a la familia de DF Robot y entrega una señal analógica con voltaje de 0 a 5V.
Diagrama de Conexión.
A continuación se muestra como se debe realizar la conexión entre el anemómetro, el display OLED y Arduino R3.
Debido a que el Arduino se alimentara por vía USB, se suministrara voltaje por otra vía para el anemómetro, siendo que requiere voltaje entre 9 a 24V para poder funcionar.
Cabe mencionar que se debe tener en común las Tierras (GND), es decir realizar la unión del GND de la alimentación externa con el GND del Arduino.
Código para visualizar datos del Anemómetro
Para el siguiente código solamente requeriremos las librerías para poder utilizar el OLED y realizar la comunicación I2C para poder desplegar la información procesada por el Arduino UNO R3.
Si no cuentas con la librería para usar el display OLED, te recomendamos revisar el tutorial Como programas y conectar el Display Oled de 0.96 con Arduino Uno
//Incluimos las librerías con las que estaremos trabajando #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> /*Liberia para Oleds monocromáticos basados en controladores SSD1306 Se declara el pin de reset, este es requerido por el constructor de la librería SSD1306 para definir el tipo de OLED y la comunicación I2C en los (pines SDA, SCL)*/ #define OLED_RESET 13 Adafruit_SSD1306 display(OLED_RESET); /*Se define una condición para saber si en la librería esta definida la altura de 32 de lo contrario no dejara compilar el código hasta que se cambie la altura correcta desde la librería*/ #if (SSD1306_LCDHEIGHT != 32) #error("Altura incorrecta, cambie en la librería de Adafruit_SSD1306.h!"); #endif int valorA; float voltaje; int velocidad; int v; void setup() { Serial.begin(9600); //Iniciamos la comunicación serial a 9600 baud display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Se inicia la comunicación I2C en la direcion 0x3C para la pantalla oled 128x32 } void loop() { display.clearDisplay(); //Borra el buffer del OLED valorA = analogRead(A0); //Guarda los valores obtenidos del sensor en la variable valorA // 0 a 5V al rango de valores 0 a 1023, según corresponda voltaje = valorA * (5.0 / 1023.0); // Se realiza operación que dará equivalencia del valor obtenido //a un voltaje correspondiente velocidad = 6 * voltaje; //La velocidad respecto al Voltaje= 6xVOLTAJE leer_oled(); //Se ejecuta función leer_oled, para poder desplegar valores //en la pantalla OLED //Para confirmar lo anterior se mostrara el voltaje y velocidad obtenida por cada lectura Serial.print("Voltaje:"); Serial.print(voltaje); Serial.println("V"); Serial.print("Velocidad:"); Serial.print(velocidad); Serial.println(" m/s"); Serial.println(); delay(500); //Espera de 5ms para repetir rutina } //Función del display OLED para poder mostrar los datos obtenidos del Anemómetro void leer_oled() { display.clearDisplay(); //Borra el buffer display.setTextColor(WHITE); //Establece el color display.setTextSize(1); //Establece el tamaño de fuente, admite tamaños de 1 a 8 display.setCursor(0, 0); //Establecer las coordenadas para mostrar la posición del texto display.println("VOLTAJE"); display.setTextSize(2); //Se cambia el tamaño de fuente display.setCursor(60, 0); display.println(voltaje); //Se despliega el valor del voltaje obtenido de la operación de conversión display.setCursor(110, 0); display.println("V"); display.setTextSize(1); //Se cambia nuevamente el tamaño de fuente display.setCursor(0, 20); display.println("VELOCIDAD"); display.setTextSize(2); //Se cambia nuevamente el tamaño de fuente display.setCursor(60, 18); Serial.println(velocidad); //Se despliega el valor de la velocidad obtenida de multiplicar por el factor 6 y voltaje display.setCursor(90, 18); display.println("m/s"); display.display(); //Muestra el texto }
La operación para obtener la equivalencia de voltaje respecto a la velocidad esta dada por el fabricante en el datasheet del sensor DF ROBOT Wind Speed Sensor. como se muestra a continuación:
Por lo tanto como se puede leer en el código, se realizo un par de operaciones para poder obtener la velocidad correspondiente al voltaje de entrada de la señal obtenida del anemómetro y finalmente visualizarlo en el display OLED así como también en el Monitor Serial del IDE de Arduino.
Si te interesa ver el funcionamiento de otros productos de la familia DF Robot te invitamos a realizar el tutorial de Reconocimiento Facial con Cámara HuskyLens.