Station Météo

Réalistion d’une station Météo

Enclosure

Imprimée en 3D, à partir d’un modèle trouvé sur Makerworld

Choix du module contrôleur

Module Lolin D1 Mini (version 4), sur base d’un ESP8266EX.

LoLin D1 Mini ESP8266
  • 11 IO numériques, interrupt/pwm/I2C/one-wire supported(except D0)
  • 1 entrée analogue (3.2V max input)
  • Type-C USB Port
  • LOLIN I2C Port
  • Compatible with MicroPython, Arduino, nodemcu

Pins utilisable sur le ESP8266 :

Connexions nécessaires:

  • Module AHT20/BMP280 I2C (D4 SCL, D3 SCA)
  • Module LoRa RFM95W DI00, 3,3 Volts|, GND, MISO, MOSI, SCK, NSS.
  • Module Hal KY-024 D02 (nécéssite une résistance pull up et doit pouvoir générer une interrupt).
  • Module OLED display, peut être rajouté sur le bus I2C

Connexion des modules

  • Le RFM95W utilise un interface SPI (MOSI,MISO, NSS, SCL, RST) et donne une connexion LoRa sur 868 MHz vers le réseau TTN

  • Le AHT20-BMP280 utilise une interface I2C (SDA/SCL) et donne la mesure de température, hygrométrie et pression barométrique.

  • Le KY-024 la sortie connecte une entrée numérique pouvant piloter un interrupt qui permet de compter les tours de l’anémomètre, la sortie analogique n’est pas utilisée.

  • l’entrée analogique disponible sur l’ESP8266 va permettre de connecter un détecteur angulaire pour mesurer la direction du vent (à faire).

Le LoLin D1 mini à deux pins numériques disponibles mais elle ne peuvent pas être utilisées facilement avec un interrupt, l’interface I2C va donc être configurée sur ces deux pins et on utilisera les pins originale de l’interface I2C comme entrées numériques.

D1 Mini Device
D8 (GPIO15) RFM95W NSS
D5 (GPIO14) RFM95W SCK
D7 (GPIO13) RFM95W MOSI
D6 (GPIO12) RFM95W MISO
D4 (GPIO2 - New SCL) AHT20/BMP280 SCL
D1 (GPIO1) org SCL RFM95W DIO0
D2 (GPIO2) org SDA KY-024 D0 on interrupt
D3 (GPIO0) New SDA - (flash button) AHT20/BMP280 SDA
A0 (ADC0) Analog in KY-024 A0
VBUS 5 Volts KY-024 VCC +
3V3 VCC AHT-20/BMP280 VCC, RFM95W 3.3V
GND All modules GND
LoLin D1 Mini

Atention que les pins D3 et D4 doivent être en pull up car le niveau 0 arrête la séquence de Bootstrap. Le Mini D1 est equippé de résistance de pullup sur les deux pins. Une des pin du I2C par defaut étant utilisée pour générer l’interruption de comptage l’I2C est donc configurée sur D4 -> SCL et D4 -> SDA. Attention l’inverse n’a pas fonctionné (D3 en SCL et D4 en SDA), mon expication (???) D4 est une sortie (sur la LED) et donc doit absolument être branchée sur SCL (I2C clock output). Lors des transmissions ur l’I2C la LED indequerat le passage des données en effet colatéral.

La connexion analogique avec le KY-024 n’est pas absolument nécessaire car on ne détecte que le passage de l’aimant et pas sa proximité.

Wiring Wiring Cirkit

Les circuit RFM95W et AHT20-BMP280 doivent être aliementés en 3V3 pour une compatibilité ent re les niveaux de sorties/entrées.

Le code pour la gestion de l’anémomètre.

On définit un interrupt sur la pin D4 qui appelle une routine incrémentant un compteur et accesoirement changeant l’état de la LED du ESP8266 indiquant ainsi la détection de rotation.

En suite on définit un interrupt timer qui va lire le compteur après un intervalle de temps et calculer la vitesse linéaire en fonction de l’intervalle de comptage, du rayon de l’anémomètre (Centre axe de rotation / capteur HAL) et du nombre de passage d’aimants, on obtient une vitese de rotation en tour rad/minute que l’on peut convertir en km/hr via la formule V = 𝟂 r où 𝟂 est la vitesse de rotation en radians par seconde et r le rayon en mètres, la vitesse est alors obtenue en m/s.

Redéfinition de l’I2C

L’I2C du D1 ne peut plus se trouver en D1/D2 il est donc déplacé vers D3/D4, à noter que le SCL doit être mis sur D4 et le SDA sur D3, l’inverse ne permet pas de reconnaitre l’AHT20, de plus le module doit apparemment être alimenté en 3,3 Volts car en 5 volts l’aht20 n’est pas détecté.

  • 2 D4 SCL (LED)
  • 0 D3 SDA (FLASH)
Anémomètre - Thermomètre - Hygromètre - baromètre

Quelques mesures:

Nbr of hits 43 speed 0.0246308.4 (m/s) ---RPM 84 (T/min) speed   0.0887 (km/hr) Temp: 26.9° Hmdt: 29 % Patm: 1013.8 mBar
Nbr of hits 17 speed 0.0070378.4 (m/s) ---RPM 24 (T/min) speed   0.0253 (km/hr) Temp: 26.9° Hmdt: 29 % Patm: 1013.8 mBar
Nbr of hits 33 speed 0.0175938.4 (m/s) ---RPM 60 (T/min) speed   0.0633 (km/hr) Temp: 26.8° Hmdt: 29 % Patm: 1013.8 mBar
Nbr of hits 39 speed 0.0211128.4 (m/s) ---RPM 72 (T/min) speed   0.0760 (km/hr) Temp: 26.8° Hmdt: 29 % Patm: 1013.8 mBar
Nbr of hits 46 speed 0.0246308.4 (m/s) ---RPM 84 (T/min) speed   0.0887 (km/hr) Temp: 26.7° Hmdt: 29 % Patm: 1013.7 mBar
Nbr of hits 38 speed 0.0211128.4 (m/s) ---RPM 72 (T/min) speed   0.0760 (km/hr) Temp: 26.6° Hmdt: 29 % Patm: 1013.8 mBar
Nbr of hits 30 speed 0.0175938.4 (m/s) ---RPM 60 (T/min) speed   0.0633 (km/hr) Temp: 26.6° Hmdt: 29 % Patm: 1013.8 mBar
Nbr of hits 1 speed 0.0000008.4 (m/s) ---RPM 0 (T/min) speed   0.0000 (km/hr) Temp: 26.6° Hmdt: 29 % Patm: 1013.8 mBar

Monitoring des valeurs

Un serveur OTA est mis en place sur un serveur web pour permettre la mise a jour à distance du firmware.

Le serveur web peur être utiliser pour obtenir une lecture de valeur aux capteurs sur une page web

page web

Le système peut être connecté via telnet sur l’adresse IP du ESP8266, ce qui permet de redriger la console (port série) d’envoyer des commandes, par exemple la commande read:

telnet 192.168.1.79
Trying 192.168.1.79...
Connected to 192.168.1.79.
Escape character is '^]'.
Console redirected.
on4kch-meteo > RPM 36 (T/min) speed   0.0380 (km/hr) counter: 20 hits	AHT20 - Temp:  24.85 °C Humidity: 33 %	BMP280 - Temp:  25.39 °C Pressure: 1013.39 hPa
RPM 12 (T/min) speed   0.0127 (km/hr) counter: 8 hits	AHT20 - Temp:  24.83 °C Humidity: 33 %	BMP280 - Temp:  25.37 °C Pressure: 1013.37 hPa
read
KY-024 Analog 871 	counter: 0 hits	AHT20 - Temp:  24.84 °C Humidity: 33 %	BMP280 - Temp:  25.37 °C Pressure: 1013.42 hPa
on4kch-meteo > help
unrecognized command help
available commands are:
- ping check
- time until next uplink
- bye exit telnet
- raz reboot module
read read and display sensor values
on4kch-meteo > 

connexion du module LoRa RFM95W

RFM95W ConnectedTTN Connected

Logiciel

le firmware (Arduino IDE) sera placé sur github plus tard (cleanup needed …)

Accès aux données récoltées.

Les données sont diffucées via un broker mqtt accessible en WiFi et via le réseau TTN accessible via LoRa.

Les clients peuvent donc se connecter à l’un ou l’autre pour récolter les données.

Exemple, mise à jour en temps quasi réel sur un page Web via une connexion sur le boker en websocket voir en tête de page . Ceci utilise un client mqtt javascript inséré dans la page Web.

Connexion FHEM/HOMEASSISTANT, simplement en ajoutant les capteurs dans la configuration MQTT.

Utilisation de rrdtools pour la génération de graphiques de vitesse du vent, un programme accumule les données reçues par mqtt, et un autre génère le graphiques, ceux-ci pourraient aussi être générés par CGI (à la demande). Les RRD étant configurés de façon à donner des moyennes/maximum sur des périodes de temps prédéfinies.

Graphique dynamique avec selection d’un intervalle de temps et de la mesure.

L’utilisation de mqtt permet donc d’accéder aux données en temps réel (ou quasi) par plusieurs clients/consomateurs.