Table des matières:

Comment construire votre propre anémomètre à l'aide de commutateurs Reed, d'un capteur à effet Hall et de quelques rebuts sur Nodemcu - Partie 2 - Logiciel : 5 étapes (avec photos)
Comment construire votre propre anémomètre à l'aide de commutateurs Reed, d'un capteur à effet Hall et de quelques rebuts sur Nodemcu - Partie 2 - Logiciel : 5 étapes (avec photos)

Vidéo: Comment construire votre propre anémomètre à l'aide de commutateurs Reed, d'un capteur à effet Hall et de quelques rebuts sur Nodemcu - Partie 2 - Logiciel : 5 étapes (avec photos)

Vidéo: Comment construire votre propre anémomètre à l'aide de commutateurs Reed, d'un capteur à effet Hall et de quelques rebuts sur Nodemcu - Partie 2 - Logiciel : 5 étapes (avec photos)
Vidéo: 1-formulaire html et validation javascript de examen 2016 theorie developpement 2024, Novembre
Anonim
Comment construire votre propre anémomètre à l'aide de commutateurs Reed, d'un capteur à effet Hall et de quelques déchets sur Nodemcu - Partie 2 - Logiciel
Comment construire votre propre anémomètre à l'aide de commutateurs Reed, d'un capteur à effet Hall et de quelques déchets sur Nodemcu - Partie 2 - Logiciel
Comment construire votre propre anémomètre à l'aide de commutateurs Reed, d'un capteur à effet Hall et de quelques déchets sur Nodemcu - Partie 2 - Logiciel
Comment construire votre propre anémomètre à l'aide de commutateurs Reed, d'un capteur à effet Hall et de quelques déchets sur Nodemcu - Partie 2 - Logiciel

introduction

Ceci est la suite du premier article "Comment construire votre propre anémomètre à l'aide de commutateurs Reed, d'un capteur à effet Hall et de quelques rebuts sur Nodemcu - Partie 1 - Matériel" - où je montre comment assembler les dispositifs de mesure de la vitesse et de la direction du vent. Ici, nous allons exploiter le logiciel de contrôle de mesure conçu pour être utilisé dans un Nodemcu utilisant l'IDE Arduino.

Description du projet

Dans le post précédent, les appareils armés et connectés au Nodemcu sont capables de mesurer la vitesse et la direction du vent. Le logiciel de contrôle a été conçu pour lire la rotation de l'anémomètre pendant un certain temps, calculer la vitesse linéaire, lire la direction dans laquelle se trouve la girouette, afficher les résultats dans l'OLED, publier les résultats dans ThingSpeak et dormir pendant 15 minutes jusqu'à ce que la prochaine mesure.

Avis de non-responsabilité: cet anémomètre ne doit pas être utilisé à des fins professionnelles. Il est uniquement destiné à un usage académique ou domestique.

Remarque: l'anglais n'est pas ma langue naturelle. Si vous trouvez des erreurs grammaticales qui vous empêchent de comprendre le projet, merci de me le faire savoir pour les corriger. Merci beaucoup.

Étape 1: Installation de l'IDE Arduino, des cartes et bibliothèques ESP8266 et de votre compte ThingSpeak

Installation de l'IDE Arduino, des cartes et bibliothèques ESP8266 et de votre compte ThingSpeak
Installation de l'IDE Arduino, des cartes et bibliothèques ESP8266 et de votre compte ThingSpeak
Installation de l'IDE Arduino, des cartes et bibliothèques ESP8266 et de votre compte ThingSpeak
Installation de l'IDE Arduino, des cartes et bibliothèques ESP8266 et de votre compte ThingSpeak

Installer Arduino IDE et Nodemcu

Si vous n'avez jamais installé l'IDE Arduino, veuillez lire le tutoriel dans le lien - Comment installer Arduino IDE - où vous pouvez trouver les instructions complètes.

Prochaine étape, pour installer la carte Nodemcu utilisez ce tutoriel du Magesh Jayakumar Instructables qui est très complet. Comment installer Nodemcu no Arduino IDE

Installation de bibliothèques

Étape suivante, vous devez installer les bibliothèques utilisées par l'esquisse. Ils sont courants et vous pouvez suivre les étapes indiquées ci-dessous.

Bibliothèque ThingSpeak -

Bibliothèque ESP8266 -

Création d'un compte ThingSpeak

Pour utiliser le ThingSpeak (https://thingspeak.com/) vous devez créer un compte (il est toujours gratuit pour un certain nombre d'interactions) où vous pourrez enregistrer les données mesurées dans votre anémomètre et surveiller les conditions de vent dans votre maison, même par téléphone portable. En utilisant ThingSpeak, vous pouvez donner au public l'accès à vos données collectées à toute personne intéressée. C'est un bon avantage de ThingSpeak. Entrez dans la page d'accueil et suivez les étapes pour créer votre compte.

Une fois le compte créé, entrez dans ce tutoriel - ThingSpeak Getting Started - pour créer vos chaînes. C'est assez bien expliqué. En résumé, vous devez créer un canal où les données seront stockées. Ce canal a un ID et une API de clé qui doivent être référencés dans le sketch chaque fois que vous souhaitez enregistrer des données. ThingSpeak stockera toutes les données dans une banque et les affichera chaque fois que vous accéderez à votre compte, de la manière que vous avez configurée.

Étape 2: Explorer l'esquisse

Explorer l'esquisse
Explorer l'esquisse
Explorer l'esquisse
Explorer l'esquisse

Organigramme

Dans le diagramme, vous pouvez comprendre le fluxogramme du croquis. Lorsque vous réveillerez (liez) le Nodemcu, il se connectera à votre réseau Wi-Fi, dont vous avez configuré les paramètres et commencera à compter 1 minute de temps pour effectuer les mesures. Tout d'abord, il comptera les rotations de l'anémomètre pendant 25 secondes, calculez la vitesse linéaire et lire la direction du vent. Les résultats sont affichés sur l'OLED. Répétez les mêmes étapes et pour cette deuxième lecture, il transmettra au ThingSpeak.

Ensuite, Nodemcu se met en veille pendant 15 minutes pour économiser la batterie. Comme j'utilise un petit panneau solaire, il est impératif que je le fasse. Si vous utilisez une source 5V, vous pouvez modifier le programme pour qu'il ne se mette pas en veille et continuer à mesurer les données.

Structure des programmes

Dans le diagramme, vous pouvez voir la structure de l'esquisse.

Anémomètre_Instructables

C'est le programme principal qui charge les bibliothèques, démarre les variables, contrôle l'interruption d'attachement, appelle toutes les fonctions, calcule la vitesse du vent, détermine sa direction et le met en veille.

communication

Connectez le WiFi et envoyez les données à ThingSpeak.

informations d'identification.h

Les clés de votre réseau WiFi et les identifiants de votre compte dans ThingSpeak. C'est ici que vous modifierez vos identifiants de clés et vos API.

définit.h

Il contient toutes les variables du programme. C'est ici que vous pouvez modifier les temps de lecture ou la durée pendant laquelle le nodemcu doit dormir.

les fonctions

Il contient les fonctions pour combiner les paramètres et lire le multiplexeur ainsi que la fonction pour lire les rotations de l'anémomètre.

oledAfficher

Affichez à l'écran les résultats de la vitesse et de la direction du vent.

Étape 3: Explications sur…

Explications sur …
Explications sur …
Explications sur …
Explications sur …
Explications sur …
Explications sur …
Explications sur …
Explications sur …

Attacher l'interruption

La rotation de l'anémomètre est mesurée par la fonction attachInterrupt () (et detachInterrupt ()) dans le GPIO 12 (broche D6) du Nodemcu (il a une fonction d'interruption sur ses broches D0-D8).

Les interruptions sont des événements ou des conditions qui amènent le microcontrôleur à arrêter l'exécution de la tâche qu'il exécute, à travailler temporairement dans une tâche différente et à revenir à la tâche initiale.

Vous pouvez lire le détail de la fonction dans le lien pour le tutoriel d'Arduino. Voir attachInterrupt().

Syntaxe: attachInterrupt (broche, fonction de rappel, type/mode d'interruption);

broche = D6

fonction de rappel = rpm_anemometer - compte chaque impulsion sur une variable.

type/mode d'interruption = RISING - interruption lorsque la broche passe de bas à haut.

A chaque impulsion produite par la magnéto dans le capteur Hall, la broche passe de bas en haut et la fonction de comptage est activée et additionnée d'impulsions dans une variable, pendant les 25 secondes établies. Une fois le temps écoulé, le compteur est déconnecté (detachInterrupt()) et la routine calcule la vitesse en étant déconnecté.

Calcul de la vitesse du vent

Une fois que l'on a déterminé combien de tours l'anémomètre a donné en 25 secondes, nous calculons la vitesse.

  • RADIO est la mesure de l'axe central de l'anémomètre à la pointe de la balle de ping-pong. Vous devez avoir très bien mesuré le vôtre - (voir cela dans le diagramme qui dit 10 cm).
  • RPS (rotations par seconde) = rotations / 25 secondes
  • RPM (rotations par minute) = RPS * 60
  • OMEGA (vitesse angulaire - radians par seconde) = 2 * PI * RPS
  • Linear_Velocity (mètres par seconde) = OMEGA * RADIO
  • Linear_Velocity_kmh (Km par heure) = 3,6 * Linear_Velocity et c'est ce qui va être envoyé à ThingSpeak.

Lire la direction de la girouette

Pour lire la position de la girouette pour déterminer la direction du vent le programme envoie des signaux bas et haut au multiplexeur avec toutes les combinaisons des paramètres A, B, C (muxABC matrice) et attend de recevoir sur la broche A0 le résultat qui peut être n'importe quelle tension entre 0 et 3,3V. Les combinaisons sont indiquées dans le diagramme.

Par exemple, lorsque C = 0 (bas), B = 0 (bas), A = 0 (bas) le multiplexeur lui donne les données de la broche 0 et envoie le signal à A0 qui est lu par le Nodemcu; si C = 0 (bas), B = 0 (bas), A = 1 (haut) le multiplexeur vous enverra les données de la broche 1 et ainsi de suite, jusqu'à ce que la lecture des 8 canaux soit terminée.

Comme le signal est analogique, le programme se transforme en numérique (0 ou 1), si la tension est inférieure ou égale à 1,3V le signal est 0; s'il est supérieur à 1,3V le signal est 1. La valeur 1,3V est arbitraire et pour moi, cela a très bien fonctionné. Il y a toujours de petites fuites de courant et cela protège qu'il n'y a pas de faux positifs.

Ces données sont stockées dans un vecteur val[8] qui sera comparé au tableau d'adresses comme compas. Voir la matrice dans le diagramme. Par exemple, si le vecteur reçu est [0, 0, 1, 0, 0, 0, 0, 0, 0] il indique dans la matrice la direction E et correspond à un angle de 90 degrés; si [0, 0, 0, 0, 0, 0, 1, 1] indique dans la matrice l'adresse WNW et correspond à un angle de 292,5 degrés. Le N correspond à [1, 0, 0, 0, 0, 0, 0, 0, 0] et à un angle de 0 degré.

Ce qui sera envoyé au ThingSpeak est à l'angle car il n'accepte que les chiffres.

Étape 4: Communications

Communication
Communication
Communication
Communication

Comment envoyer des données à ThingSpeak

La fonction thingspeaksenddata() est responsable de l'envoi des données.

ThingSpeak.setField (1, float (linear_velocity_kmh)) - Envoyer les données de vitesse à field1 de mon canal

ThingSpeak.setField (2, float (wind_Direction_Angle)) - Envoyer les données d'adresse à field2 de mon canal

ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey) - Envoyer à mon canal myChannelNumber, avec l'API écrite myWriteAPIKey indiquée par TS. Ces données ont été générées par TS lors de la création de votre compte et de votre chaîne.

Dans les images ci-dessus, vous pouvez voir comment ThingSpeak affiche les données reçues.

Dans ce lien, vous pouvez accéder aux données de mon projet dans le canal public de ThingSpeak.

Étape 5: Variables principales

paramètres de girouette

  • MUX_A D5 - mux pi A vers la broche Nodemcu D5
  • MUX_B D4 - broche multiple B vers broche Nodemcu D4
  • MUX_C D3 - broche multiple C à broche Nodemcu D3
  • READPIN 0 - Entrée analogique sur NodeMcu = A0
  • NO_PINS 8 - nombre de broches multiplex
  • val[NO_PINS] - ports 0 à 7 du multiplexeur
  • wind_Direction_Angle - Angle de direction du vent
  • String windRose[16] = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"} - cardenaux, collatéraux et sous-nantissements
  • 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} - angles de chaque direction
  • Chiffre [16] [NO_PINS] - Matrice des directions
  • muxABC[8] [3] - Combinaisons de multiplexage ABC

paramètres de l'anémomètre

  • rpmcount - comptez le nombre de rotations complètes de l'anémomètre dans le temps imparti
  • timemeasure = 25.00 - temps de mesure en secondes
  • timetoSleep = 1 - Temps de réveil Nodemcu en minutes
  • sleepTime = 15 - temps pour continuer à dormir en minutes
  • rpm, rps - fréquences de rotation (rotations par minute, rotations par seconde)
  • rayon - mètres - la mesure de la longueur de l'aile de l'anémomètre
  • linear_velocity - vitesse linéaire en m/seg
  • linear_velocity_kmh - vitesse linéaire en km/h
  • omega - vitesse radiale en rad/seg

Vous trouverez ci-dessous le croquis complet. Créez un nouveau dossier sur le dossier Arduino de votre ordinateur avec le même nom que le programme principal (Anemometer_Instructables) et assemblez-les tous.

Entrez les données de votre réseau wifi et l'ID ThingSpeak et la clé API Writer dans la partie Credentials.h et enregistrez. Téléchargez sur Nodemcu et c'est tout.

Pour tester le fonctionnement du système je recommande un bon ventilateur rotatif.

Pour accéder aux données par téléphone mobile, téléchargez l'application pour IOS ou Android appelée ThingView, qui, heureusement, est toujours gratuite.

Configurez les paramètres de votre compte et vous serez prêt à voir les conditions de vent de votre maison où que vous soyez.

Si vous avez un intérêt, accédez à mon canal ThingSpeak Channel ID: 438851, qui est public et vous y trouverez les mesures de vent et de direction dans ma maison.

J'espère vraiment que vous vous amusez.

Si vous avez un doute n'hésitez pas à me contacter.

Salutations

Conseillé: