Table des matières:
- Étape 1: Installation de l'IDE Arduino, des cartes et bibliothèques ESP8266 et de votre compte ThingSpeak
- Étape 2: Explorer l'esquisse
- Étape 3: Explications sur…
- Étape 4: Communications
- Étape 5: Variables principales
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)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
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
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
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…
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
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é:
Station de boucle d'effet guitare True Bypass programmable à l'aide de commutateurs DIP : 11 étapes
Programmable True Bypass Guitar Effect Looper Station utilisant des commutateurs DIP : Je suis un passionné de guitare et un joueur amateur. La majorité de mes projets se déroulent autour de l'attirail de la guitare. Je construis mes propres amplis et quelques pédales d'effet. Dans le passé, je jouais dans un petit groupe et je me suis convaincu que je n'avais besoin que d'un ampli avec un re
Construire un Arduino DIY sur un PCB et quelques conseils pour les débutants : 17 étapes (avec photos)
Construire un Arduino DIY sur un PCB et quelques conseils pour les débutants : Ceci est conçu comme un guide pour quiconque soude son propre Arduino à partir d'un kit, qui peut être acheté auprès d'A2D Electronics. Il contient de nombreux trucs et astuces afin de le construire avec succès. Vous découvrirez également ce que tous les différents composants d
Capteur à effet Hall sur Arduino à l'aide de Fidget Spinner : 3 étapes (avec photos)
Capteur à effet Hall sur Arduino à l'aide de Fidget Spinner: RésuméDans ce projet, j'explique le fonctionnement du capteur à effet Hall en mesurant la vitesse de fidget spinner avec une carte arduino. fonctionnement :-Un capteur à effet Hall est un transducteur qui fait varier sa tension de sortie en réponse à un champ magnétique. Effet Hall
Comment construire votre propre moteur à réaction : 10 étapes (avec photos)
Comment construire votre propre moteur à réaction : Vous n'avez pas besoin d'être Jay Leno pour posséder une moto à réaction, et nous vous montrerons comment créer votre propre moteur à réaction ici même pour alimenter vos véhicules loufoques. Il s'agit d'un projet en cours, et de nombreuses informations supplémentaires seront disponibles sur notre site Web s
Comment construire une boîte de haut-parleur pour guitare ou en construire deux pour votre chaîne stéréo. : 17 étapes (avec photos)
Comment construire un boîtier de haut-parleur de guitare ou en construire deux pour votre stéréo. : Je voulais un nouveau haut-parleur de guitare pour aller avec l'ampli à lampes que je construis. Le haut-parleur restera dans ma boutique, il n'a donc pas besoin d'être quelque chose de trop spécial. Le revêtement Tolex pourrait être trop facilement endommagé alors j'ai juste pulvérisé l'extérieur en noir après un léger ponçage