Imprimée en 3D, à partir d’un modèle trouvé sur Makerworld
Pins utilisable sur le ESP8266 :
Connexions nécessaires:
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 |
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é.
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.
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é.
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
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
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 >
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.
L’utilisation de mqtt permet donc d’accéder aux données en temps réel (ou quasi) par plusieurs clients/consomateurs.