Tabla de contenido:
- Paso 1: Instalación de Arduino IDE, placas y bibliotecas ESP8266 y su cuenta ThingSpeak
- Paso 2: exploración del boceto
- Paso 3: Explicaciones sobre …
- Paso 4: Comunicaciones
- Paso 5: Variables principales
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)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
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 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
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 …
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
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:
Joystick USB de efecto Hall: 7 pasos (con imágenes)
Joystick USB de efecto Hall: este instructivo muestra cómo usar un joystick industrial de efecto Hall para hacer un joystick USB de alta presión. Hay otros instructables relacionados, Tiny USB Joystick que puede proporcionar una solución de bajo costo; >
Roll-E [Robot de desechos electrónicos reciclado]: 4 pasos (con imágenes)
Roll-E [Robot reciclado de desechos electrónicos]: ¿Recuerdas a nuestro amigo recolector de basura WALL · E? Bueno, este tipo de aquí es su primo menor, y su nombre es Roll-E. Este es oficialmente mi primer instructable, así que sea amable y hágame saber cualquier error que pueda cometer. A nadie le gusta leer l
Sensor de efecto Hall Arduino con interrupciones: 4 pasos
Sensor de efecto Hall Arduino con interrupciones: Hola a todos, Hoy les mostraré cómo puede conectar un sensor de efecto Hall a un Arduino y usarlo con una interrupción.Herramientas y materiales utilizados en el video (enlaces de afiliados): Arduino Uno: http : //s.click.aliexpress.com/e/biNyW0zK Sensores de efecto Hall: h
Sensor de efecto Hall en Arduino usando Fidget Spinner: 3 pasos (con imágenes)
Sensor de efecto Hall en Arduino usando Fidget Spinner: Resumen En este proyecto, estoy explicando cómo funciona el sensor de efecto Hall midiendo la velocidad del fidget spinner con la placa arduino. funcionamiento: -Un sensor de efecto Hall es un transductor que varía su voltaje de salida en respuesta a un campo magnético. Efecto Hall
Twitchy, tu amigo de los desechos electrónicos: 11 pasos (con imágenes)
Twitchy, tu amigo de los desechos electrónicos: es más limpio que un hámster, tiene más personalidad que la mayoría de los reptiles y es mucho más inteligente que este perro que solía tener. Además, está hecho de basura y es muy divertido de construir. La población humana puede (y podría decirse que debería) dividirse en