Module d'extérieur pour envois des mesures de sondes

Première publication le dim. 02 mai 2021

Un petit défi a été fait récemment à la maison. Il y a régulièrement du vent et la curiosité nous a poussé à connaître quelle est la vitesse du vent au cours du temps. J'ai donc relevé le défi.

Après une rapide analyse, j'ai trouvé un anémomètre qui semble avoir fait ses preuves. Ayant également des photoresistances trainant dans un placard, je me suis dit, pourquoi ne pas les utiliser également... juste pour le fun.

Les mesures sont traités par un ESP32, mieux qu'un Arduino en raison de son WiFi intégré. L'ESP32 récupère un équivalent de la luminosité et la vitesse du vent (moyenne et maximale).

L'objectif est d'obtenir un module "modulable" (il serait possible de rajouter d'autres sondes) connectés à différentes sondes extérieures et qui transmet les mesures via WiFi au réseau local.

Circuit électrique

C'est une plaque électronique simple contenant pour le moment 2 résistances de 10k Ohms, la photo résistance et l'anémomètre.

Electronique du circuit

Le fichier pour Kicad est également disponible.

J'ai mis cela sur un PCB (au milieu) et il reste encore de la place pour d'autres potentiels modules. En base à droite, on voit l'ESP32 connecté pour le moment en USB.

Module

Le fonctionnement de l'anémomètre est basé sur le principe de l'interrupteur Reed. Côté code, il faudra donc calculé le nombre d'interruptions. Avantage, c'est très simple d'usage, inconvénient, l'interrupteur étant mécanique est soumis à l'usure. On verra l'impact sur le temps.

Le code pour l'ESP32

Le projet est disponible sur mon compte Github. C'est basé sur PlatformIO, sur le site Github, je donne des informations supplémentaires.

Vitesse du vent

Pour calculer la vitesse du vent,il va falloir récupèrer durant un nombre de secondes définis le nombre d'interruptions. On multipliera ensuite par 2,4km/h qui correspond à un tour par seconde.

La formule est donc la suivante avec l'exemple de 20 interruptions durant 2 secondes de récupèration des données :

vitesse = (NombreInterruption / Temps) * 2.4
vitesse = (20 / 2) * 2.4 = 24km/h

Le méthode measureWind() effectue ces différents calculs.

Mesure de luminosité

Il n'est pas possible juste avec la photo résistance de récupérer l'information de luminosité (les lux). Il faudrait effectuer la calibration avec un luxmètre, appareil de mesure que je n'ai pas en ma possession.

En revanche, il est possible de mesure la fluctuation du signal analogique. Cela est effectué très simplement dans la fonction measureLight().

Envoi des données vers le serveur MQTT

Les mesures effectuées sont envoyés régulièrement, actuellement toutes les 5 minutes (cela est paramètrable) à un serveur MQTT au format JSON.

{ "max_wind" : 0.000000, "avg_wind" : 0.000000, "light" : 0}

Notes à propos de l'autonomie

Le module WiFi est réveillé et rendormi durant la phase d'envoi des données au serveur MQTT et ceci afin de garantir un plus grande longévité de la batterie Le module ne pouvant être alimenté via une prise électrique, il va falloir prendre en compte cet usage de l'ESP32. Le Bluetooh, gros consommateurs avec le WiFi de l'énergie du module, est dès le départ coupé.

La prochaine étape sera de travailler sur l'intégration d'une batterie avec des tests de durée. On verra ensuite pour mettre la sonde en extérieur dans un boîtier adapté.

Catégories: Bidouilles Tags: iot