Table des matières:

Une station météo ESP-Now Home : 9 étapes (avec photos)
Une station météo ESP-Now Home : 9 étapes (avec photos)

Vidéo: Une station météo ESP-Now Home : 9 étapes (avec photos)

Vidéo: Une station météo ESP-Now Home : 9 étapes (avec photos)
Vidéo: Дневник хранящий жуткие тайны. Переход. Джеральд Даррелл. Мистика. Ужасы 2024, Novembre
Anonim
Une station météo ESP-Now Home
Une station météo ESP-Now Home

Je voulais avoir une station météorologique à domicile pendant un certain temps et une station sur laquelle tous les membres de la famille pourraient facilement vérifier la température et l'humidité. En plus de surveiller les conditions extérieures, je voulais également surveiller des pièces spécifiques de la maison et mon atelier de garage. Cela nous permettrait de savoir quand c'est le bon moment pour aérer la maison ou faire fonctionner le déshumidificateur (il pleut beaucoup ici pendant l'hiver). Ce que j'ai créé est un système de capteurs basé sur ESP-Now qui rend compte à un serveur Web local que tout le monde peut vérifier à partir de son ordinateur ou de son téléphone. Pour le téléphone, j'ai écrit une simple application Android pour rendre cela encore plus facile.

Étape 1: Détails de conception

Détails de conception
Détails de conception

Je voulais avoir plusieurs stations de capteurs que je pourrais placer à différents endroits et les faire rapporter à une station principale (ou hub) qui enregistrerait les informations. Après avoir essayé diverses idées, j'ai décidé d'utiliser le protocole ESP-Now d'Espressif, car il permettait une communication rapide directement entre les appareils. Vous pouvez lire un peu sur ESP-Now ici et ce dépôt GitHub a été une grande partie de mon inspiration.

La première image montre la disposition du système. Chaque capteur rapporte ses mesures à un périphérique passerelle qui transmet les données au serveur principal par une connexion série câblée. La raison en est que le protocole ESP-Now ne peut pas être actif en même temps que la connexion WIFI. Pour qu'un utilisateur puisse accéder à la page Web, le WIFI devrait être activé à tout moment, ce qui rendrait alors impossible l'utilisation des communications ESP-Now sur le même appareil. Alors que le périphérique de passerelle doit être un périphérique basé sur Espressif (capable d'ESP-Now), le serveur principal peut être tout périphérique capable d'exécuter une page Web.

Certaines stations de capteurs fonctionneraient avec des batteries (ou des batteries chargées à l'énergie solaire) et d'autres seraient simplement alimentées par le secteur. Cependant, je voulais que tous utilisent le moins d'énergie possible et c'est là que la fonction "deepsleep" disponible pour les appareils ESP8266 et ESP32 est extrêmement utile. Les stations de capteurs se réveilleraient périodiquement, prendraient des mesures et les enverraient au dispositif de passerelle et se rendormiraient pendant une période de temps préprogrammée. Leur période de réveil de seulement 300 ms environ toutes les 5 minutes (dans mon cas) réduit considérablement leur consommation d'énergie.

Étape 2: Capteurs

Capteurs
Capteurs
Capteurs
Capteurs

Il existe différents capteurs pour mesurer les paramètres environnementaux. J'ai décidé de m'en tenir uniquement aux capteurs capables de communiquer I2C, car ils permettaient des mesures rapides et fonctionnaient sur tous les appareils que je possédais. Plutôt que de travailler directement avec des circuits intégrés, j'ai recherché des modules prêts à l'emploi qui avaient les mêmes brochages pour simplifier mes conceptions. J'ai commencé par ne vouloir mesurer que la température et l'humidité et j'ai donc choisi un module basé sur SI7021. Plus tard, j'ai voulu un capteur capable de mesurer également la pression et j'ai décidé d'essayer les modules de capteur basés sur le BME280. Pour certains endroits, je voulais même surveiller les niveaux de lumière et le module BH1750 était idéal pour cela en tant que module de capteur séparé. J'ai acheté mes modules de capteurs sur ebay et voici les modules que j'ai reçus:

  • BME280 (GY-BMP/E280), mesure la température, l'humidité et la pression
  • SI7021 (GY-21), mesure la température et l'humidité
  • BH1750 (GY-302), mesure la lumière

Il existe deux styles de modules PCB GY-BMP/E280. Les deux partagent le même brochage pour les broches 1 à 4. Un module a deux broches supplémentaires, CSB et SDO. Ces deux broches sont pré-connectées sur la version 4 broches du module. Le niveau de la broche SDO détermine l'adresse I2C (Ground = par défaut de 0x76, VCC = 0x77). La broche CSB doit être connectée à VCC pour sélectionner l'interface I2C. Je préfère le module à 4 broches, car il est prêt à l'emploi tel quel pour mon usage.

En général, ces modules sont très pratiques à utiliser car ils ont déjà des résistances de rappel installées pour les lignes de communication et tous fonctionnent sur 3,3 V et sont donc compatibles avec les cartes basées sur ESP8266. Notez que les broches de ces circuits intégrés de capteur ne tolèrent généralement pas 5 V, donc les interfacer directement avec quelque chose comme un Arduino Uno peut les endommager de façon permanente.

Étape 3: Stations de capteurs

Stations de capteurs
Stations de capteurs

Comme mentionné, les stations de capteurs seraient toutes des appareils Espressif utilisant le protocole de communication ESP-Now. À partir de projets et d'expérimentations précédents, j'avais à ma disposition plusieurs appareils différents pour effectuer mes premiers tests et les intégrer dans la conception finale. J'avais sous la main les appareils suivants:

  • deux modules ESP-01
  • deux mini cartes de développement Wemos D1
  • une carte de développement Lolin ESP8266
  • une carte de kit WIFI série ESP12E
  • une carte GOOUUU ESP32 (une carte de développement à 38 broches)

J'avais également une carte de développement Wemos D1 R2, mais il y avait des problèmes avec elle qui ne lui permettaient pas de se réveiller d'un sommeil profond et en tant que périphérique de passerelle, elle se plantait et ne redémarrait pas correctement. Je l'ai réparé plus tard et il est devenu une partie du projet d'ouvre-porte de garage. Pour que "deepsleep" fonctionne, la broche RST de l'ESP8266 doit être connectée à la broche GPIO16, afin que la minuterie de veille puisse réveiller l'appareil. Idéalement, cette connexion doit être réalisée avec une diode Schottky (cathode vers GPIO16) afin que la réinitialisation manuelle via la connexion USB-TLL lors de la programmation fonctionne toujours. Cependant, une résistance de faible valeur (300 ohms) ou même une connexion filaire directe peuvent toujours réussir.

Les modules ESP-01 ne permettent pas un accès facile à la broche GPIO16 et il faut souder directement sur le circuit intégré. Ce n'est pas une tâche simple et je ne le recommanderais pas à tout le monde. La carte du kit WIFI série ESP12E était un peu une nouveauté et nécessitait pas mal de modifications pour qu'elle soit utile à mes fins. Les planches les plus faciles à utiliser étaient les planches de type mini Wemos D1 et la planche Lolin. Les appareils ESP32 ne nécessitent aucune modification pour que deepsleep fonctionne. Andreas Spiess a une belle Instructable à ce sujet.

Étape 4: Station de capteur ESP-01

Station de capteur ESP-01
Station de capteur ESP-01
Station de capteur ESP-01
Station de capteur ESP-01
Station de capteur ESP-01
Station de capteur ESP-01

Sur toutes les stations de capteurs, les modules de capteurs sont montés verticalement pour réduire la quantité de poussière qui peut s'y accumuler. Tous ne sont pas dans des boîtiers et je ne peux pas les monter dans des boîtiers. La raison en est que les appareils peuvent se réchauffer et affecter les relevés de température et d'humidité s'ils ne sont pas suffisamment ventilés.

Les cartes ESP-01 sont très compactes et ont peu de broches d'E/S numériques avec lesquelles travailler, mais c'est suffisant pour l'interface I2C. Les planches nécessitent cependant une modification délicate pour permettre au "deepsleep" de fonctionner. Sur la photo montrée, un fil a été soudé de la broche d'angle (GPIO16) à la broche RST sur l'en-tête. Le fil que j'ai utilisé est un fil de "réparation" isolé de 0,1 mm de diamètre. Le revêtement isolant fond lors du chauffage, il peut donc être soudé pour réparer les traces, etc. dans les circuits imprimés sans craindre de créer des courts-circuits là où le fil entre en contact avec d'autres composants. Sa taille le rend difficile à travailler et j'ai soudé ce fil en place sous un microscope (style amateur / collectionneur de timbres). Gardez à l'esprit que l'en-tête sur le côté droit a un espacement des broches de 0,1" (2,54 mm). L'installation d'une diode Schottky ici ne serait pas facile du tout, j'ai donc décidé d'essayer le fil seul et les deux unités fonctionnent depuis plus un mois sans aucun problème.

Les modules ont été installés sur deux cartes prototypes que j'ai créées. L'une (#1) est une carte de programmation qui permet également d'installer et de tester des modules I2C, tandis que l'autre (#2) est une carte de développement/test pour les appareils I2C. Pour la première carte, j'ai soudé ensemble un ancien connecteur USB mâle et un petit PCB pour alimenter l'unité directement à partir d'un adaptateur mural USB. L'autre unité a une prise CC standard modifiée pour s'adapter à l'embase de bornier à vis et est également alimentée via un adaptateur mural.

Le schéma montre comment ils sont connectés et comment fonctionne le programmeur. Je n'ai pas d'autres modules ESP-01, donc je n'ai pas eu besoin du programmateur dans l'immédiat. À l'avenir, je ferai probablement un PCB pour eux. Le module de capteur SI7021 est installé sur ces deux cartes, car je n'étais pas aussi intéressé par les mesures de pression à ces endroits.

Étape 5: Station de capteur du kit WIFI série ESP 12E

Station de capteur de kit WIFI série ESP 12E
Station de capteur de kit WIFI série ESP 12E
Station de capteur de kit WIFI série ESP 12E
Station de capteur de kit WIFI série ESP 12E

La carte ESP12E Serial WIFI Kit n'était pas tant destinée au développement qu'à la présentation de ce qui pouvait être fait avec cet appareil. Je l'ai acheté il y a longtemps pour en apprendre un peu plus sur la programmation de l'ESP8266 et j'ai finalement décidé de lui donner une nouvelle utilisation. J'ai supprimé toutes les LED qui étaient installées pour les démonstrations et ajouté un en-tête de programmation USB ainsi qu'un en-tête I2C adapté aux modules que j'utilise. Il avait une photorésistance CdS connectée à sa broche d'entrée analogique et j'ai décidé de le laisser là. Cette unité particulière allait surveiller mon atelier de garage et le capteur photo qu'il avait était suffisant pour me faire savoir si les lumières avaient été accidentellement laissées allumées. Pour la mesure de la lumière, j'ai normalisé les lectures pour me donner un pourcentage de sortie et tout ce qui dépasse "5" la nuit signifiait que les lumières étaient restées allumées ou qu'une porte de la maison n'était pas correctement fermée. Les broches RST et GPIO16 sont clairement étiquetées sur le PCB et la diode Schottky les reliant a été installée sur la face inférieure du PCB. Il est alimenté par une carte série USB qui est directement branchée sur un chargeur mural USB. J'ai des extras de ces cartes série USB et je n'ai pas besoin de celle-ci pour le moment.

Je n'ai pas fait de schéma pour cette carte et je ne recommande généralement pas d'en acheter un pour l'utiliser à cette fin. Les cartes Wemos D1 Mini sont beaucoup plus adaptées et seront discutées ensuite. Bien que, si vous en avez un et que vous avez besoin de conseils, je serais heureux de vous aider.

Étape 6: Mini stations de capteurs D1

Mini stations de capteurs D1
Mini stations de capteurs D1
Mini stations de capteurs D1
Mini stations de capteurs D1
Mini stations de capteurs D1
Mini stations de capteurs D1

Les cartes de développement ESP8266 de type Wemos D1 Mini sont mes préférées et si je devais le refaire, je les utiliserais simplement. Ils ont un grand nombre de broches IO accessibles, peuvent être directement programmés via l'IDE Arduino et sont encore assez compacts. La broche D0 est GPIO16 sur ces cartes et connecter une diode Schottky est assez facile à faire. Le schéma montre comment j'ai câblé ces cartes et les deux utilisent le module de capteur BME2808.

L'une des deux cartes est utilisée pour surveiller la météo extérieure et fonctionne à partir d'une batterie solaire. Un panneau solaire de 165 mm x 135 mm (6 V, 3,5 W) est connecté à un module de charge de batterie Li-ion TP4056 (voir le schéma de configuration de la station de capteur de batterie à énergie solaire). Ce module de charge particulier (03962A) dispose d'un circuit de protection de batterie qui est nécessaire si la batterie (pack) n'en contient pas. La batterie Li-ion a été recyclée à partir d'une ancienne batterie d'ordinateur portable et elle peut toujours contenir une charge suffisante pour faire fonctionner la carte D1 Mini, en particulier lorsque la veille prolongée est activée. La carte a été placée dans une enceinte en plastique pour la protéger des éléments. Cependant, pour que l'intérieur soit exposé à la température et à l'humidité extérieures, deux trous de 25 mm de diamètre ont été percés sur les côtés opposés et recouverts (de l'intérieur) d'un tissu paysager noir. Le tissu est conçu pour permettre à l'humidité de pénétrer et ainsi l'humidité peut être mesurée. À une extrémité de l'enceinte, un petit trou a été percé et une fenêtre en plastique transparent a été installée. C'est là que le module de capteur de lumière BH1750 a été placé. L'ensemble de l'unité est placé à l'extérieur à l'ombre (pas au soleil direct) avec le capteur de lumière pointé vers l'extérieur. Il a fonctionné à partir de la batterie solaire pendant près de 4 semaines par temps d'hiver pluvieux/nuageux ici.

Étape 7: Passerelle et serveur Web

Passerelle et serveur Web
Passerelle et serveur Web
Passerelle et serveur Web
Passerelle et serveur Web
Passerelle et serveur Web
Passerelle et serveur Web

Une carte Lolin NodeMCU V3 (ESP8266) a été utilisée pour le périphérique ESP-Now Gateway et une ESP32 (carte GOOUUU) a été utilisée pour le serveur Web. Presque n'importe quelle carte ESP8266 ou même ESP32 aurait pu servir de périphérique de passerelle, c'était simplement la carte que j'avais "restée" après avoir utilisé toutes les autres cartes que j'avais.

J'ai utilisé la carte ESP32 car j'ai besoin d'une carte avec un peu plus de puissance de calcul pour collecter les données, les trier, les enregistrer dans un stockage et exécuter le serveur Web. À l'avenir, il pourrait également avoir son propre capteur et un affichage local (OLED). Pour le stockage, une carte SD a été utilisée avec un adaptateur personnalisé. J'ai utilisé un adaptateur microSD vers carte SD commun et soudé une embase mâle à 7 broches (pas de 0,1 ) aux contacts plaqués. J'ai suivi les conseils de ce GitHub pour effectuer les connexions.

La configuration de prototypage (avec des fils Dupont) n'inclut pas de module de capteur, mais le PCB finalisé que j'ai conçu en permet un ainsi qu'un petit écran OLED. Les détails sur la façon dont j'ai conçu ce PCB font partie d'un autre Instructable.

Étape 8: Logiciel

Logiciel
Logiciel

Appareils ESP8266 (ESP-NOW)

Le logiciel pour tous les appareils a été écrit à l'aide de l'IDE Arduino (v1.87). Chaque station de capteur exécute essentiellement le même code. Ils diffèrent uniquement par les broches utilisées pour les communications I2C et le module de capteur auquel elles sont connectées. Plus important encore, ils envoient le même paquet de données de mesure à la station ESP-Now Gateway, qu'ils aient ou non le même capteur. Cela signifie que certaines stations de capteurs rempliront des valeurs factices pour les mesures de pression et de niveau de luminosité si elles ne disposent pas de capteurs pour fournir des valeurs réelles. Le code de chaque station et de la passerelle a été adapté des exemples d'Anthony Elder sur ce GitHub.

Le code du périphérique de passerelle utilisait SoftwareSerial pour communiquer avec le serveur Web, car ESP8266 n'a qu'un seul UART matériel entièrement fonctionnel. Fonctionnant à une vitesse de transmission maximale de 9600, il semble assez fiable et est plus que suffisant pour envoyer ces paquets de données relativement petits. Le dispositif passerelle est également programmé avec une adresse MAC privée. La raison en est que s'il doit être remplacé, les stations de détection n'ont pas toutes besoin d'être reprogrammées avec la nouvelle adresse MAC du destinataire.

ESP32 (serveur Web)

Chaque station de capteur envoie son paquet de données au dispositif passerelle qui le transmet au serveur Web. Avec le paquet de données, l'adresse MAC de la station de détection est également envoyée pour identifier chaque station. Le serveur Web dispose d'une table de « recherche » pour déterminer l'emplacement de chaque capteur et trie les données en conséquence. L'intervalle de temps entre les mesures a été fixé à 5 min plus un facteur aléatoire pour éviter que les capteurs "entrent en collision" les uns avec les autres lors de l'envoi au dispositif de passerelle.

Le routeur WIFI domestique a été configuré pour attribuer une adresse IP fixe au serveur Web lorsqu'il se connecte au WIFI. Pour le mien, c'était 192.168.1.111. En tapant cette adresse dans n'importe quel navigateur, vous vous connecterez au serveur Web de la station météo tant que l'utilisateur se trouvera à portée WIFI (et se connectera) au réseau domestique. Lorsque l'utilisateur se connecte à la page Web, le serveur Web répond avec un tableau des mesures et inclut l'heure de la dernière mesure de chaque capteur. De cette façon, si une station de capteur ne répond plus, on peut le voir dans le tableau si une lecture date de plus de 5 à 6 minutes.

Les données sont enregistrées dans des fichiers texte individuels sur une carte SD et peuvent également être téléchargées à partir de la page Web. Il peut être importé dans Excel ou toute autre application pour tracer des données

Application Android

Pour faciliter la visualisation des informations météorologiques locales sur un smartphone, j'ai créé une application relativement Android à l'aide d'Android Studio. Il est disponible sur ma page GitHub ici. Il utilise la classe webview pour charger la page Web à partir du serveur et, par conséquent, des fonctionnalités limitées. Il n'est pas capable de télécharger les fichiers de données et je n'en avais de toute façon pas besoin sur mon téléphone.

Étape 9: Résultats

Résultats
Résultats

Enfin, voici quelques résultats pour ma station météo à domicile. Les données ont été téléchargées sur un ordinateur portable et tracées dans Matlab. J'ai attaché mes scripts Matlab et vous pouvez également les exécuter dans GNU Octave. Le capteur extérieur fonctionne sur sa batterie solaire depuis près de 4 semaines et nous avons rarement du soleil à cette période de l'année. Jusqu'à présent, tout fonctionne bien et tout le monde dans la famille peut consulter la météo eux-mêmes plutôt que de me demander maintenant !

Conseillé: