![]() |
![]() |
Dans ce tutoriel je vous propose un projet pour réaliser un anémomètre connecté équipé d’une girouette. Si vous êtes équipé d’une imprimante 3D, vous n’aurez qu’à imprimer les fichiers des composants mécaniques qui se trouvent sur GitHub (ici) ou les plateformes d’échanges de fichiers STL.
Pour réaliser l’anémomètre, nous utiliserons un capteur de champ magnétique à effet Hall qui va permettre de compter le nombre de rotations réalisées par l’hélice de l’anémomètre.
Pour déterminer la direction du vent, nous allons fabriquer un encodeur optique de position à l’aide de Leds et de phototransistors.
Pour la partie Arduino, j’ai opté pour le module ESP8266 Wemos D1 mini. Ce module est très compact et très économique (environ 5€, article de présentation).
Sommaire
Matériel nécessaire
Pour réaliser ce projet vous aurez besoin du matériel suivant :
Le budget de réalisation de ce projet est d’environ 30€.
Comment réaliser l’anémomètre
Il existe deux grands principes pour réaliser un anémomètre. Le plus facile et de compter le nombre de tour réalisé par une hélice entrainée par le vent. C’est le principe retenu pour ce projet. Le second grand principe est la mesure par ultrason retenu par Netatmo pour son anémomètre connecté NWA01. Ce sera pour un prochain projet…
Pour réaliser l’anémomètre, je vous propose donc de réaliser un compte tour à l’aide d’un capteur de champ magnétique qui va changer d’état en présence d’un aimant (pour en savoir plus sur l’effet Hall). Dans le cadre d’un projet DIY, on cherche toujours à minimiser le coût des composants (et à les acheter facilement), c’est pourquoi j’ai opté pour un us1881. Vous pouvez en acheter par lot de 2 sur Amazon pour environ 3,70€. L’us1881 est un capteur qui passe à l’état bas (LOW) en présence d’un pole Sud. Dans son principe de fonctionnement l’us1881 a besoin d’être « réamorcé » par le pole Nord de l’aimant pour pouvoir de nouveau être employé pour détecter le tour suivant. Nous aurons donc besoin de 2 aimants permanents. On en trouve pour moins de 7€ le lot de 20 sur Amazon (diamètre 3 x 6 mm).
Comment réaliser la girouette
La détermination de la direction du vent est un peu plus compliquée à réaliser. Certains projets proposés sur internet utilisent un potentiomètre angulaire libre à 360 degrés (lire l’article sur le Keyes KY-040). Le problème, c’est qu’il est impossible de déterminer la position absolue du capteur. A chaque redémarrage de l’Arduino, il faut re-déterminer la position initiale (zéro) à partir de laquelle on compte dans un sens ou dans l’autre le nombre d’incréments dont s’est déplacée la flèche de la girouette.
Pour ce projet, je vous propose de déterminer la position angulaire à l’aide d’un encodeur optique réalisé à l’aide de phototransistors et de Leds. Tout comme la capteur à effet Hall, un phototransistor se comporte comme un interrupteur et change d’état (passe à l’état LOW) en présence de lumière.
Il existe bien d’autres solutions (magnétique, gyroscope…)…et donc encore plein de projets à proposer !
Le plus facile à trouver sur les sites marchands est le Vishay TEPT4400. On le trouve par exemple pour moins de 4,50€ sur eBay. Ce phototransistor peut être alimenté en 5 Volts. Il est sensible de 440 à 800nm avec un maximum à 570nm, ce qui correspond à la couleur jaune. Cependant, son spectre de détection est assez large ce qui permet de choisir un autre couleur (rouge, vert, bleu), il fonctionnera tout aussi bien. La documentation technique est disponible ici.
Comment ça marche ?
En plaçant les Led sur un cercle et en découpant dans un disque tournant trois lumières. Les lumières sont découpées de telle sorte que l’on ne peut avoir qu’un seul changement d’état d’un phototransistor à chaque changement de position. C’est le principe du code de Gray (détaillé ici), mais sans avoir besoin de coder quoi que ce soit. Avec cette méthode, on perd un peu en précision (30 positions possibles, soit un résolution de 12°) à la place des 32 positions théoriques (25), mais c’est encore largement suffisant pour déterminer la direction du vent (4 directions cardinales et 4 positions intermédiaires).
Dans cette première version, je n’ai pas développé d’algorithme pour déterminer l’orientation à partir d’une orientation connue de la girouette. Il faudra en passer par un étalonnage « à la main » et la coder « en dure » dans le programme Arduino. C’est assez simple, il suffit de repérer la position décimale correspondant aux orientation de la girouette en vous aidant de la boussole d’un smartphone.
Si vous avez mis au point un algorithme générique, n’hésitez pas à proposer un commit dans le projet github ou la partager dans les commentaires de l’article.
Pour en savoir plus sur le fonctionnement, lisez cet article plus détaillé.
Conception électronique
Coté branchement, le circuit est assez simple et ne comporte que des résistances. Le circuit est composé de deux blocs :
- Le premier bloc constitue l’encodeur de position angulaire. On alimente les 5 Leds directement sur la broche +3V de la Wemos (ce qui permet par la même occasion d’économiser 5 résistances et gagner en place). Le phototransistor fonctionne comme un interrupteur. Il passe à l’état Bas (LOW) lorsque suffisamment de lumière est captée. La plus grande broche est reliée au GND. Une résistance de 10 kΩ est placée entre l’alimentation 5V et la plus petite broche sur lequel on viendra également récupérer le signal sur une entrée numérique de la Wemos.
- Le second circuit permet de mesurer la vitesse du vent à l’aide d’un us1881. L’us1881 possède 3 broches dont voici le branchement (faces inclinées face à vous) : * La broche de gauche au +5V * La broche centrale doit être reliée au GND. * La broche de droite permet de récupérer l’état du capteur sur une entrée numérique de l’ESP * Les deux broches extérieures (+5V / signal) doivent être reliées par une résistance de 10 kΩ
* Isolez les broches extérieures avec de la gaine thermo
Suivez le schéma de branchement pour fabriquer le circuit sur une plaque perforée préalablement découpée (largeur 46mm x hauteur 42mm). Je vous conseil de ne pas souder la Wemos directement sur la plaque perforée de manière à pouvoir la débrancher facilement du circuit en cas de problème. Le téléversement est quelque fois capricieux et il faut retirer la carte du circuit pour pouvoir le faire.
Je tiens à m’excuser pour la qualité des soudures (je vais choquer les plus pros d’entre vous !). J’ai fais quelques essais complémentaires : fonctionnement sur batterie, piloter l’allumage des Leds, cassé mes soudures en mettant au point la procédure d’assemblage…, bref tout ce qu’il faut pour obtenir ça !
Conception mécanique
J’ai opté pour Autodesk Fusion 360 qui est gratuit pour les étudiants et les enseignants (durant 3 ans). Il y a encore quelques mois (au moment ou j’ai commencé à le prendre en main), Fusion 360 était également gratuit pour les Makers et les petites entreprises. C’est un peu dommage, espérons qu’Autodesk reviendra sur sa politique commerciale.
Vous trouverez le fichier Fusion 360 ainsi qu’un export au format STEP dans le dossier CAO du projet github.
L’anémomètre comporte 17 pièces à imprimer en 3D. En voici la présentation :
Fabrication de l’anémomètre par impression 3D
Tous les fichiers STL se trouvent dans le dossier STL du projet github. Voici un tableau récapitulatif du temps d’impression et de la longueur de fil (théorique) nécessaire. Pour fabriquer mon anémomètre, j’ai utilisé ma Dagoma #discovery200. Si vous avez besoin, j’ai écrit récemment un article qui explique comment exporter les objets au format STL depuis Fusion 360 et comment configurer et utiliser la version originale de Cura à la place de Cura by Dagoma.
J’ai utilisé du PLA pour la réalisation. Le PLA reste biodégradable, mais à long terme. Il faudra mettre votre anémomètre connecté à l’abris des intempéries car il n’est pas étanche dans cette version.
Anémomètre
| Pièce | Longueur de PLA (m) | masse de PLA (g) | Temps d’impression (min) |
| Axe central | 0,42 | 1 | 5 |
| Blocage circuit | 0,67 | 2 | 6 |
| Boitier anémomètre | 11,15 | 33 | 120 |
| Couvercle | 3,52 | 10 | 38 |
| 3 hélices | 8,21 | 24 | 92 |
| Support aimants | 0,25 | 1 | 3 |
| Support hélice inférieur | 2,89 | 9 | 27 |
| Support hélice supérieur | 2,88 | 9 | 28 |
| Support us1881 | 0,83 | 2 | 8 |
| Totaux | 30,4 m | 90g | 322 min (5h30 env.) |
Girouette
| Pièce | Longueur de PLA (m) | masse de PLA (g) | Temps d’impression (min) |
| Boitier girouette | 8,89 | 27 | 83 |
| Flèche girouette | 6,04 | 18 | 66 |
| Disque encodeur de position | 1,15 | 3 | 13 |
| Support Leds | 3,13 | 9 | 33 |
| Totaux | 19,2m | 57g | 195 min (soit 3h15 environ) |
Autres pièces
| Pièce | Longueur de PLA (m) | masse de PLA (g) | Temps d’impression (min) |
| Plaque de liaison | 7,03 | 21 | 67 |
| Support mural | 4,7 | 14 | 42 |
| Totaux | 11,73m | 35g | 109 min (soit 1h49′ environ) |
Vous aurez donc besoin d’environ 62m de PLA (soit 180g environ). Le temps d’impression 3D total est d’environ 10h30.
Code Arduino / ESP8266
Le code du projet est disponible sur github ici. Le projet github contient les éléments suivants :
- Fichiers CAO aux formats STEP et f3d (Autodesk Fusion 360)
- Fichiers STL à imprimer en 3D
- Programme pour ESP8266 (ESP-12) ou Arduino (en modifiant les adresses)
Le programme permet dans cette version de réaliser les fonctions suivantes :
- Se connecter à votre réseau WiFi
- Se connecter à un Broker Mosquitto. Si vous découvrez, voici un article de présentation
- Mesurer la vitesse du vent durant 5 secondes
- Mesurer la direction du vent
- Publier à l’aide du protocole MQTT sur le broker Mosquitto la vitesse du vent en km/h, m/s ainsi que la direction du vent
Toutes les broches nécessaires se trouvent au début du programme dans des variables distinctes. J’ai utilisé le repérage des broches de NodeMCU. Avant de téléverser le programme, n’oubliez pas de modifier les variables suivantes : #define wifi_ssid “SSID” #define wifi_password “MOTDEPASSE” #define mqtt_server “IPSERVEURMQTT” #define mqtt_user “guest”
#define mqtt_password “guest”



