Tabla de contenido:

Cómo construir su propio anemómetro usando interruptores de lengüeta, sensor de efecto Hall y algunos desechos en Nodemcu - Parte 2 - Software: 5 pasos (con imágenes)
Cómo construir su propio anemómetro usando interruptores de lengüeta, sensor de efecto Hall y algunos desechos en Nodemcu - Parte 2 - Software: 5 pasos (con imágenes)

Video: Cómo construir su propio anemómetro usando interruptores de lengüeta, sensor de efecto Hall y algunos desechos en Nodemcu - Parte 2 - Software: 5 pasos (con imágenes)

Video: Cómo construir su propio anemómetro usando interruptores de lengüeta, sensor de efecto Hall y algunos desechos en Nodemcu - Parte 2 - Software: 5 pasos (con imágenes)
Video: Anemómetro con Arduino #4- Mechatronics 2024, Noviembre
Anonim
Cómo construir su propio anemómetro usando interruptores de lengüeta, sensor de efecto Hall y algunos desechos en Nodemcu - Parte 2 - Software
Cómo construir su propio anemómetro usando interruptores de lengüeta, sensor de efecto Hall y algunos desechos en Nodemcu - Parte 2 - Software
Cómo construir su propio anemómetro usando interruptores de lengüeta, sensor de efecto Hall y algunos desechos en Nodemcu - Parte 2 - Software
Cómo construir su propio anemómetro usando interruptores de lengüeta, sensor de efecto Hall y algunos desechos en Nodemcu - Parte 2 - Software

Introducción

Esta es la secuela de la primera publicación "Cómo construir su propio anemómetro usando interruptores de lengüeta, sensor de efecto Hall y algunos desechos en Nodemcu - Parte 1 - Hardware" - donde muestro cómo ensamblar los dispositivos de medición de la velocidad y la dirección del viento. Aquí explotaremos el software de control de medición diseñado para su uso en un Nodemcu utilizando el IDE de Arduino.

Descripción del Proyecto

En el post anterior, los dispositivos armados y conectados al Nodemcu son capaces de medir la velocidad y dirección del viento. El software de control fue diseñado para leer la rotación del anemómetro durante un período de tiempo, calcular la velocidad lineal, leer la dirección en la que se encuentra la paleta, mostrar los resultados en el OLED, publicar los resultados en ThingSpeak y dormir durante 15 minutos hasta la siguiente medida.

Descargo de responsabilidad: este anemómetro no debe utilizarse con fines profesionales. Es solo para uso académico o doméstico.

Nota: el inglés no es mi idioma natural. Si encuentra errores gramaticales que le impiden comprender el proyecto, hágamelo saber para corregirlos. Muchas gracias.

Paso 1: Instalación de Arduino IDE, placas y bibliotecas ESP8266 y su cuenta ThingSpeak

Instalación de Arduino IDE, placas y bibliotecas ESP8266 y su cuenta ThingSpeak
Instalación de Arduino IDE, placas y bibliotecas ESP8266 y su cuenta ThingSpeak
Instalación de Arduino IDE, placas y bibliotecas ESP8266 y su cuenta ThingSpeak
Instalación de Arduino IDE, placas y bibliotecas ESP8266 y su cuenta ThingSpeak

Instalación de Arduino IDE y Nodemcu

Si nunca ha instalado el IDE de Arduino, lea el tutorial en el enlace - Cómo instalar el IDE de Arduino - donde puede encontrar las instrucciones completas.

Siguiente paso, para instalar la placa Nodemcu use este tutorial de Magesh Jayakumar Instructables que es muy completo. Cómo instalar Nodemcu no Arduino IDE

Instalación de bibliotecas

El siguiente paso debe instalar las bibliotecas que utiliza el boceto. Son comunes y puede seguir los pasos que se muestran a continuación.

Biblioteca ThingSpeak:

Biblioteca ESP8266:

Crear una cuenta ThingSpeak

Para usar ThingSpeak (https://thingspeak.com/) debes crear una cuenta (aún es gratuita para un cierto número de interacciones) donde puedas guardar los datos medidos en tu anemómetro y monitorear las condiciones del viento en tu hogar, incluso a través del teléfono celular. Al utilizar ThingSpeak, puede dar acceso público a sus datos recopilados a quien esté interesado. Esa es una buena ventaja de ThingSpeak. Ingrese a la página de inicio y siga los pasos para crear su cuenta.

Una vez que se crea la cuenta, ingrese a este tutorial - Introducción a ThingSpeak - para crear sus canales. Está bastante bien explicado. En resumen, debes crear un canal donde se almacenarán los datos. Este canal tiene una ID y una API clave a las que se debe hacer referencia en el boceto cada vez que desee registrar datos. ThingSpeak almacenará todos los datos en un banco y los mostrará cada vez que accedas a tu cuenta, de la forma que hayas configurado.

Paso 2: exploración del boceto

Explorando el bosquejo
Explorando el bosquejo
Explorando el bosquejo
Explorando el bosquejo

Diagrama de flujo

En el diagrama, puede comprender el fluxograma del boceto. Al despertar (vincular) el Nodemcu, este se conectará a su red Wi-Fi, cuyos parámetros usted ha configurado y comenzará a contar 1 minuto de tiempo para realizar las medidas. Primero, contará las rotaciones del anemómetro durante 25 segundos, calcular la velocidad lineal y leer la dirección del viento. Los resultados se muestran en el OLED. Repita los mismos pasos y para esta segunda lectura, se transmitirá al ThingSpeak.

Luego, Nodemcu duerme durante 15 minutos para ahorrar batería. Como estoy usando un pequeño panel solar, es imperativo que lo haga. Si estás usando una fuente de 5V puedes modificar el programa para que no se duerma y siga midiendo los datos.

Estructura de los programas

En el diagrama, puede ver la estructura del boceto.

Anemómetro_Instructables

Es el programa principal que carga las librerías, inicia las variables, controla la interrupción de adjuntar, llama a todas las funciones, calcula la velocidad del viento, determina su dirección y lo pone a dormir.

comunicaciones

Conecte el WiFi y envíe los datos a ThingSpeak.

credentials.h

Las claves de tu red WiFi y los identificadores de tu cuenta en ThingSpeak. Aquí es donde cambiará sus ID de claves y API.

define.h

Contiene todas las variables del programa. Aquí es donde puede cambiar los tiempos de lectura o cuánto tiempo debe dormir el nodemcu.

funciones

Contiene las funciones para combinar los parámetros y leer el multiplexor así como la función para leer las rotaciones del anemómetro.

oledDisplay

Muestra los resultados en pantalla de la velocidad y la dirección del viento.

Paso 3: Explicaciones sobre …

Explicaciones sobre …
Explicaciones sobre …
Explicaciones sobre …
Explicaciones sobre …
Explicaciones sobre …
Explicaciones sobre …
Explicaciones sobre …
Explicaciones sobre …

Adjuntar interrupción

La rotación del anemómetro se mide mediante la función attachInterrupt () (y detachInterrupt ()) en el GPIO 12 (pin D6) del Nodemcu (tiene función de interrupción en sus pines D0-D8).

Las interrupciones son eventos o condiciones que hacen que el microcontrolador detenga la ejecución de la tarea que está realizando, trabaje en una tarea diferente temporalmente y vuelva a la tarea inicial.

Puede leer el detalle de la función en el enlace del tutorial de Arduino. Consulte attachInterrupt ().

Sintaxis: attachInterrupt (pin, función de devolución de llamada, tipo / modo de interrupción);

pin = D6

función de devolución de llamada = rpm_anemometer - cuenta cada pulso en una variable.

tipo / modo de interrupción = RISING - interrumpe cuando el pin pasa de menor a mayor.

A cada pulso producido por el magneto en el sensor Hall, el pin pasa de menor a mayor y se activa la función de conteo y se suma el pulso en una variable, durante los 25 segundos establecidos. Una vez transcurrido el tiempo, el contador se desconecta (detachInterrupt ()) y la rutina calcula la velocidad mientras está desconectado.

Calcular la velocidad del viento

Una vez que se ha determinado cuántas rotaciones dio el anemómetro en 25 segundos, calculamos la velocidad.

  • RADIO es la medida desde el eje central del anemómetro hasta la punta de la pelota de ping pong. Debes haber medido muy bien el tuyo - (mira eso en el diagrama que dice 10 cm).
  • RPS (rotaciones por segundo) = rotaciones / 25 segundos
  • RPM (rotaciones por minuto) = RPS * 60
  • OMEGA (velocidad angular - radianes por segundo) = 2 * PI * RPS
  • Linear_Velocity (metros por segundo) = OMEGA * RADIO
  • Linear_Velocity_kmh (Km por hora) = 3.6 * Linear_Velocity y esto es lo que se enviará a ThingSpeak.

Leer la dirección de la veleta

Para leer la posición de la veleta para determinar la dirección del viento el programa envía señales bajas y altas al multiplexor con todas las combinaciones de los parámetros A, B, C (matriz muxABC) y esperar a recibir en el pin A0 el resultado que puede ser cualquier voltaje entre 0 y 3,3 V. Las combinaciones se muestran en el diagrama.

Por ejemplo, cuando C = 0 (bajo), B = 0 (bajo), A = 0 (bajo) el multiplexor le da los datos del pin 0 y envía la señal a A0 que es leída por Nodemcu; si C = 0 (bajo), B = 0 (bajo), A = 1 (alto) el multiplexor le enviará los datos del pin 1 y así sucesivamente, hasta completar la lectura de los 8 canales.

Como la señal es analógica, el programa se transforma en digital (0 o 1), si el voltaje es menor o igual a 1.3V la señal es 0; si es mayor que 1.3V la señal es 1. El valor 1.3V es arbitrario y para mí funcionó muy bien. Siempre hay pequeñas fugas de corriente y esto protege de que no haya falsos positivos.

Estos datos se almacenan en un vector val [8] que se comparará con la matriz de direcciones como la brújula. Vea la matriz en el diagrama. Por ejemplo, si el vector recibido es [0, 0, 1, 0, 0, 0, 0, 0, 0] indica en la matriz la dirección E y corresponde a un ángulo de 90 grados; si [0, 0, 0, 0, 0, 0, 1, 1] indica en la matriz la dirección WNW y corresponde a un ángulo de 292,5 grados. La N corresponde a [1, 0, 0, 0, 0, 0, 0, 0, 0] y un ángulo de 0 grados.

Lo que se enviará a ThingSpeak está en ángulo porque solo acepta números.

Paso 4: Comunicaciones

Comunicaciones
Comunicaciones
Comunicaciones
Comunicaciones

Cómo enviar datos a ThingSpeak

La función thingspeaksenddata () es responsable de enviar los datos.

ThingSpeak.setField (1, float (linear_velocity_kmh)) - Envía los datos de velocidad al campo1 de mi canal

ThingSpeak.setField (2, float (wind_Direction_Angle)) - Envía los datos de la dirección al campo2 de mi canal

ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey) - Enviar a mi canal myChannelNumber, con la API myWriteAPIKey escrita indicada por TS. Estos datos fueron generados por TS al crear su cuenta y canal.

En las imágenes de arriba puede ver cómo ThingSpeak muestra los datos recibidos.

En este enlace puedes acceder a los datos de mi proyecto en el canal público de ThingSpeak.

Paso 5: Variables principales

parámetros de veleta

  • MUX_A D5 - mux pi A al pin D5 de Nodemcu
  • MUX_B D4 - mux pin B a Nodemcu pin D4
  • MUX_C D3 - mux pin C a Nodemcu pin D3
  • READPIN 0 - Entrada analógica en NodeMcu = A0
  • NO_PINS 8 - número de pines mux
  • val [NO_PINS] - puertos 0 a 7 de mux
  • wind_Direction_Angle - Ángulo de dirección del viento
  • String windRose [16] = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"}: garantías, garantías y subgarantías
  • windAng [16] = {0, 22.5, 45, 67.5, 90, 112.5, 135, 157.5, 180, 202.5, 225, 247.5, 270, 292.5, 315, 337.5} - ángulos de cada dirección
  • Dígito [16] [NO_PINS]: Matriz de indicaciones
  • muxABC [8] [3] - Combinaciones de mux ABC

parámetros del anemómetro

  • rpmcount - cuente cuántas rotaciones completas hizo el anemómetro en el tiempo asignado
  • timemeasure = 25.00 - tiempo de duración de la medición en segundos
  • timetoSleep = 1 - Nodemcu tiempo despierto en minutos
  • sleepTime = 15 - tiempo para seguir durmiendo en minutos
  • rpm, rps - frecuencias de rotación (rotaciones por minuto, rotaciones por segundo)
  • radio - metros - la medida de la longitud del ala del anemómetro
  • linear_velocity - velocidad lineal en m / seg
  • linear_velocity_kmh - velocidad lineal en km / h
  • omega - velocidad radial en rad / seg

A continuación puede encontrar el boceto completo. Cree una nueva carpeta en la carpeta Arduino de su computadora con el mismo nombre que el programa principal (Anemometer_Instructables) y júntelos todos.

Ingrese los datos de su red wifi y el ThingSpeak ID y API Writer Key en la parte Credentials.hy guarde. Sube a Nodemcu y eso es todo.

Para probar el funcionamiento del sistema recomiendo un buen ventilador giratorio.

Para acceder a los datos a través del teléfono móvil, descargue la aplicación para IOS o Android llamada ThingView, que, afortunadamente, sigue siendo gratuita.

Configure los ajustes de su cuenta y estará listo para ver las condiciones del viento en su hogar dondequiera que esté.

Si tienes interés, accede a mi canal ID de canal ThingSpeak: 438851, que es público y allí encontrarás las medidas de viento y dirección en mi casa.

Realmente espero que te diviertas.

Si tienes alguna duda no dudes en contactarme.

Saludos

Recomendado: