Índice:

Como construir seu próprio anemômetro usando chaves de palheta, sensor de efeito Hall e alguns recados no Nodemcu - Parte 2 - Software: 5 etapas (com fotos)
Como construir seu próprio anemômetro usando chaves de palheta, sensor de efeito Hall e alguns recados no Nodemcu - Parte 2 - Software: 5 etapas (com fotos)

Vídeo: Como construir seu próprio anemômetro usando chaves de palheta, sensor de efeito Hall e alguns recados no Nodemcu - Parte 2 - Software: 5 etapas (com fotos)

Vídeo: Como construir seu próprio anemômetro usando chaves de palheta, sensor de efeito Hall e alguns recados no Nodemcu - Parte 2 - Software: 5 etapas (com fotos)
Vídeo: Máquina de transformar papel em dinheiro 2024, Novembro
Anonim
Como construir seu próprio anemômetro usando chaves Reed, sensor de efeito Hall e alguns recados no Nodemcu - Parte 2 - Software
Como construir seu próprio anemômetro usando chaves Reed, sensor de efeito Hall e alguns recados no Nodemcu - Parte 2 - Software
Como construir seu próprio anemômetro usando chaves Reed, sensor de efeito Hall e alguns recados no Nodemcu - Parte 2 - Software
Como construir seu próprio anemômetro usando chaves Reed, sensor de efeito Hall e alguns recados no Nodemcu - Parte 2 - Software

Introdução

Esta é a sequência do primeiro post "Como construir seu próprio anemômetro usando chaves Reed, sensor de efeito Hall e alguns fragmentos no Nodemcu - Parte 1 - Hardware" - onde mostro como montar os dispositivos de medição de velocidade e direção do vento. Aqui, exploraremos o software de controle de medição projetado para uso em um Nodemcu usando o IDE do Arduino.

Descrição do Projeto

No post anterior, os aparelhos armados e conectados ao Nodemcu são capazes de medir a velocidade e direção do vento. O software de controle foi projetado para ler a rotação do anemômetro por um período de tempo, calcular a velocidade linear, ler a direção em que a palheta está, mostrar os resultados no OLED, publicar os resultados no ThingSpeak e dormir por 15 minutos até a próxima medição.

Isenção de responsabilidade: este anemômetro não deve ser usado para fins profissionais. É apenas para uso acadêmico ou doméstico.

Nota: Inglês não é minha língua natural. Se você encontrar erros gramaticais que o impeçam de entender o projeto, entre em contato para corrigi-los. Muito obrigado.

Etapa 1: Instalando o IDE Arduino, placas e bibliotecas ESP8266 e sua conta ThingSpeak

Instalando o IDE Arduino, placas e bibliotecas ESP8266 e sua conta ThingSpeak
Instalando o IDE Arduino, placas e bibliotecas ESP8266 e sua conta ThingSpeak
Instalando Arduino IDE, placas e bibliotecas ESP8266 e sua conta ThingSpeak
Instalando Arduino IDE, placas e bibliotecas ESP8266 e sua conta ThingSpeak

Instalando Arduino IDE e Nodemcu

Se você nunca instalou o IDE do Arduino, leia o tutorial no link - Como instalar o IDE do Arduino - onde você pode encontrar as instruções completas.

Próximo passo, para instalar a placa Nodemcu use este tutorial do Instructables Magesh Jayakumar que é muito completo. Como instalar o Nodemcu no Arduino IDE

Instalando Bibliotecas

Próxima etapa, você deve instalar as bibliotecas que usa o esboço. Eles são comuns e você pode seguir as etapas abaixo.

Biblioteca ThingSpeak -

Biblioteca ESP8266 -

Criação de uma conta ThingSpeak

Para usar o ThingSpeak (https://thingspeak.com/) você deve criar uma conta (ainda é gratuita para um certo número de interações) onde você pode salvar os dados medidos em seu anemômetro e monitorar as condições do vento em sua casa, mesmo via celular. Ao usar o ThingSpeak, você pode dar ao público acesso aos dados coletados para quem estiver interessado. Essa é uma boa vantagem do ThingSpeak. Entre na página inicial e siga as etapas para criar sua conta.

Assim que a conta for criada, entre neste tutorial - ThingSpeak Getting Started - para criar seus canais. Está muito bem explicado. Em resumo, você deve criar um canal onde os dados serão armazenados. Este canal possui um ID e uma API chave que deve ser referenciada no esboço toda vez que você deseja registrar dados. ThingSpeak armazenará todos os dados em um banco e os mostrará toda vez que você acessar sua conta, da forma que você configurou.

Etapa 2: Explorando o esboço

Explorando o esboço
Explorando o esboço
Explorando o esboço
Explorando o esboço

Fluxograma

No diagrama, você pode entender o fluxograma do esboço. Ao despertar (link) o Nodemcu, ele se conectará à sua rede Wi-Fi, cujos parâmetros você configurou e começará a contar 1 minuto de tempo para realizar as medições. Primeiramente, ele contará as rotações do anemômetro por 25 segundos, calcule a velocidade linear e ler a direção do vento. Os resultados são mostrados no OLED. Repita os mesmos passos e para esta segunda leitura, ela será transmitida para o ThingSpeak.

Em seguida, o Nodemcu dorme por 15 minutos para economizar bateria. Como estou usando um pequeno painel solar, é fundamental que o faça. Se você estiver usando uma fonte de 5 V, você pode modificar o programa para que ele não durma e continue medindo os dados.

Estrutura dos programas

No diagrama, você pode ver a estrutura do esboço.

Anemometer_Instructables

É o programa principal que carrega as bibliotecas, inicia as variáveis, controla a interrupção de attach, chama todas as funções, calcula a velocidade do vento, determina sua direção e o põe para dormir.

comunicações

Conecte o WiFi e envie os dados para o ThingSpeak.

credentials.h

As chaves da sua rede WiFi e os identificadores da sua conta no ThingSpeak. É aqui que você mudará seus IDs de chaves e APIs.

define.h

Ele contém todas as variáveis do programa. É aqui que você pode alterar os tempos de leitura ou por quanto tempo o nodemcu deve dormir.

funções

Ele contém as funções para combinar os parâmetros e ler o multiplexador, bem como a função para ler as rotações do anemômetro.

oledDisplay

Mostra na tela os resultados da velocidade e direção do vento.

Etapa 3: Explicações sobre …

Explicações sobre …
Explicações sobre …
Explicações sobre …
Explicações sobre …
Explicações sobre …
Explicações sobre …
Explicações sobre …
Explicações sobre …

Anexar interrupção

A rotação do anemômetro é medida pela função attachInterrupt () (e detachInterrupt ()) no GPIO 12 (pino D6) do Nodemcu (possui recurso de interrupção em seus pinos D0-D8).

Interrupções são eventos ou condições que fazem com que o microcontrolador pare a execução da tarefa que está realizando, trabalhe em uma tarefa diferente temporariamente e volte à tarefa inicial.

Você pode ler os detalhes da função no link do tutorial do Arduino. Veja attachInterrupt ().

Sintaxe: attachInterrupt (pin, função de callback, tipo / modo de interrupção);

pin = D6

função de retorno de chamada = rpm_anemômetro - conta cada pulso em uma variável.

tipo / modo de interrupção = RISING - interrupção quando o pino vai de baixo para alto.

A cada pulso produzido pelo magneto no sensor Hall, o pino vai de baixo para alto e a função de contagem é ativada e somado o pulso em uma variável, durante os 25 segundos estabelecidos. Depois de decorrido o tempo, o contador é desconectado (detachInterrupt ()) e a rotina calcula a velocidade durante a desconexão.

Calculando a velocidade do vento

Depois de determinar quantas rotações o anemômetro deu em 25 segundos, calculamos a velocidade.

  • RADIO é a medida do eixo central do anemômetro até a ponta da bola de pingue-pongue. Você deve ter medido o seu muito bem - (veja isso no diagrama que diz 10 cm).
  • RPS (rotações por segundo) = rotações / 25 segundos
  • RPM (rotações por minuto) = RPS * 60
  • OMEGA (velocidade angular - radianos por segundo) = 2 * PI * RPS
  • Linear_Velocity (metros por segundo) = OMEGA * RADIO
  • Linear_Velocity_kmh (Km por hora) = 3,6 * Linear_Velocity e isso é o que vai ser enviado ao ThingSpeak.

Leia a direção do cata-vento

Para ler a posição do cata-vento e determinar a direção do vento o programa envia sinais de baixa e alta para o multiplexador com todas as combinações dos parâmetros A, B, C (matriz muxABC) e espera receber no pino A0 o resultado que pode ser qualquer tensão entre 0 e 3,3V. As combinações são mostradas no diagrama.

Por exemplo, quando C = 0 (baixo), B = 0 (baixo), A = 0 (baixo) o multiplexador fornece os dados do pino 0 e envia o sinal para A0 que é lido pelo Nodemcu; se C = 0 (baixo), B = 0 (baixo), A = 1 (alto) o multiplexador enviará os dados do pino 1 e assim por diante, até que a leitura dos 8 canais seja concluída.

Como o sinal é analógico, o programa se transforma em digital (0 ou 1), se a tensão for menor ou igual a 1,3 V o sinal é 0; se for maior que 1,3 V o sinal é 1. O valor 1,3 V é arbitrário e para mim funcionou muito bem. Sempre há pequenos vazamentos de corrente e isso evita que não haja falsos positivos.

Esses dados são armazenados em um vetor val [8] que será comparado com a matriz de endereço como a bússola. Veja a matriz no diagrama. Por exemplo, se o vetor recebido for [0, 0, 1, 0, 0, 0, 0, 0, 0] indica na matriz a direção E e corresponde a um ângulo de 90 graus; if [0, 0, 0, 0, 0, 0, 1, 1] indica na matriz o endereço WNW e corresponde a um ângulo de 292,5 graus. O N corresponde a [1, 0, 0, 0, 0, 0, 0, 0, 0] e ângulo de 0 graus.

O que será enviado para o ThingSpeak está inclinado porque só aceita números.

Etapa 4: Comunicações

Comunicações
Comunicações
Comunicações
Comunicações

Como enviar dados para ThingSpeak

A função thingspeaksenddata () é responsável por enviar os dados.

ThingSpeak.setField (1, float (linear_velocity_kmh)) - Envie os dados de velocidade para o campo1 do meu canal

ThingSpeak.setField (2, float (wind_Direction_Angle)) - Enviar os dados de endereço para o campo2 do meu canal

ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey) - Enviar para meu canal myChannelNumber, com a API myWriteAPIKey escrita indicada por TS. Esses dados foram gerados pelo TS ao criar sua conta e canal.

Nas fotos acima você pode ver como o ThingSpeak mostra os dados recebidos.

Neste link você pode acessar os dados do meu projeto no canal público da ThingSpeak.

Etapa 5: Variáveis Principais

parâmetros do cata-vento

  • MUX_A D5 - mux pi A para Nodemcu pino D5
  • MUX_B D4 - mux pino B para Nodemcu pino D4
  • MUX_C D3 - mux pino C para Nodemcu pino D3
  • READPIN 0 - Entrada analógica em NodeMcu = A0
  • NO_PINS 8 - número de pinos mux
  • val [NO_PINS] - portas 0 a 7 de mux
  • wind_Direction_Angle - Ângulo da direção do vento
  • String windRose [16] = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"} - cardenais, colaterais e sub-colaterais
  • 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 direção
  • Dígito [16] [NO_PINS] - Matriz de direções
  • muxABC [8] [3] - combinações ABC mux

parâmetros do anemômetro

  • rpmcount - conta quantas rotações completas o anemômetro fez no tempo alocado
  • medida de tempo = 25,00 - tempo de duração da medição em segundos
  • timetoSleep = 1 - Nodemcu tempo de despertar em minutos
  • sleepTime = 15 - tempo para continuar dormindo em minutos
  • rpm, rps - frequências de rotação (rotações por minuto, rotações por segundo)
  • raio - metros - a medida do comprimento da asa do anemômetro
  • velocidade_ linear - velocidade linear em m / seg
  • linear_velocity_kmh - velocidade linear em km / h
  • ômega - velocidade radial em rad / seg

Abaixo você pode encontrar o esboço completo. Crie uma nova pasta na pasta Arduino do seu computador com o mesmo nome do programa principal (Anemometer_Instructables) e coloque-os todos juntos.

Insira os dados de sua rede wi-fi e o ThingSpeak ID e API Writer Key na parte Credentials.he salve. Faça upload para o Nodemcu e pronto.

Para testar o funcionamento do sistema, recomendo um bom ventilador rotativo.

Para acessar os dados pelo celular, baixe o aplicativo para IOS ou Android chamado ThingView, que, felizmente, ainda é gratuito.

Defina as configurações da sua conta e você estará pronto para ver as condições do vento em sua casa onde quer que esteja.

Se você tiver interesse, acesse meu canal ThingSpeak Channel ID: 438851, que é público e lá você encontrará as medidas de vento e direção em minha casa.

Eu realmente espero que você se divirta.

Se você tiver alguma dúvida, não hesite em me contatar.

Cumprimentos

Recomendado: