Table des matières:

Une autre station météo IoT : 8 étapes
Une autre station météo IoT : 8 étapes

Vidéo: Une autre station météo IoT : 8 étapes

Vidéo: Une autre station météo IoT : 8 étapes
Vidéo: Une STATION MÉTÉO avec un ARDUINO ! 2024, Juillet
Anonim
Une autre station météo IoT
Une autre station météo IoT
Une autre station météo IoT
Une autre station météo IoT
Une autre station météo IoT
Une autre station météo IoT
Une autre station météo IoT
Une autre station météo IoT

Ce qui suit était un cadeau d'anniversaire pour mon père; inspiré par un autre Instructable que j'ai vu et initialement destiné à lui être prouvé comme un kit d'auto-construction. Cependant, en commençant à travailler sur ce projet avec lui, je me suis très vite rendu compte que le tutoriel initial qui avait inspiré le cadeau était obsolète et que beaucoup d'autres tutoriels en ligne avaient des lacunes importantes dans leurs explications. J'ai donc décidé de publier une autre station météorologique IoT qui, espérons-le, serait facile à suivre du début à la fin.

En outre, cette instructable vous montre comment utiliser Blynk, Google Sheets ou les deux pour surveiller et enregistrer les lectures des capteurs. De plus, les entrées Google Sheets sont écrites directement dans la feuille (sans avoir à passer par un service tiers).

En ce qui concerne l'écran Stevenson, il en existe de nombreux disponibles en ligne qui peuvent être imprimés en 3D, par ex. https://www.thingverse.com/thing:1718334. Je vais construire sur celui-ci pour ce Instructable.

Un écran Stevenson est un « abri pour instruments est un abri ou une enceinte pour les instruments météorologiques contre les précipitations et le rayonnement thermique direct provenant de sources extérieures, tout en permettant à l'air de circuler librement autour d'eux ». (Wikipédia).

les pièces

  • Wemos LolIn - NodeMCU v3 (1,43 USD)
  • BME280 (Capteur de température, de pression et d'humidité) (2,40 USD)
  • Panneau solaire 6V 1000mA (9,96 USD)
  • Module de chargeur de carte de charge de batterie au Lithium 5V 1A Micro USB 18650 + protection double fonctions TP4056 (USD 0.99)
  • 4 piles rechargeables NiMH 1,2 V
  • Support de batterie (4x AA, côte à côte et bout à bout)
  • Prise de connecteur Micro USB Mâle
  • Attaches de câble
  • 3x écrous papillon
  • Perche ou manche à balai
  • Époxy et/ou super-colle (avec le recul, le silicium aurait peut-être mieux fonctionné)

Logiciel

  • Application Blynk
  • Google Sheets (si vous souhaitez avoir accès aux données historiques)
  • EasyEDA (pour dessiner un schéma)
  • IDE Arduino

Outils

  • Fer à souder
  • Souder
  • Gaine thermorétractable
  • Imprimante 3D
  • Pistolet à colle

Étape 1: Impression 3D - Écran Stevenson

Impression 3D - Écran Stevenson
Impression 3D - Écran Stevenson
Impression 3D - Écran Stevenson
Impression 3D - Écran Stevenson
Impression 3D - Écran Stevenson
Impression 3D - Écran Stevenson

Comme déjà mentionné, téléchargez les fichiers sur https://www.thingverse.com/thing:1718334 et imprimez les bits requis. Les instructions de montage se trouvent également dans le lien ci-dessus. J'ai fait quelques modifications (voir les notes ci-dessous).

Les pièces imprimées sont:

  • Top_Cover_for_m3_tapping.stl
  • Middle_Ring.stl (x5)
  • Middle_Ring_bottom.stl (x1, STL joint ci-dessus)
  • Solid_Plate.stl (x1)
  • Solid_Plate_Base.stl (x1)
  • Pole_Mount_1in_Round.stl
  • Sensor_Grid.stl
  • Electronics_Mount.stl
  • My_Solar_Cell_Mount.stl (x2, STL joint ci-dessus)

L'ordre de montage est:

  • Enfilez les trous
  • Visser les barres M3 dans les douilles filetées
  • Le couvercle supérieur
  • Solide_Plaque
  • Middle_Rings
  • Glissez dans le Sensor_Grid
  • Electronics_Mount
  • Solid_Plate_Bottom
  • Poteau_Mount
  • Les My_Solar_Cell_Mounts sont collés sur le dessus du Top_Cover

J'ai percé des trous dans les plaques solides pour permettre au câble de charge du panneau solaire de se connecter au chargeur, puis un pour permettre au câble de passer du contrôleur au capteur sur le Sensor_Grid.

Une fois terminé, le capteur a été programmé pour prendre les lectures suivantes toutes les 60 minutes:

  • Température
  • Humidité
  • Pression

Remarques

  • J'ai personnalisé les supports de cellules solaires pour qu'ils soient mieux adaptés pour tenir ma cellule solaire.
  • J'ai installé l'électronique entre le Pole_Mount et le Solid_Plate. Cela n'a pas semblé fournir une bonne protection pour l'électronique. J'ai donc modifié sur Solid_Plate pour qu'il ait une jupe qui fermerait alors l'écart et offrirait ainsi une meilleure protection pour l'électronique. Certaines des photos ci-dessus ont été prises avant que je fasse ce changement.
  • Mon époxy a atterri sans tenir le panneau solaire que j'ai ensuite recollé avec de la super colle. Je pense que je vais devoir utiliser du silicium.

Étape 2: le circuit

Le circuit
Le circuit
Le circuit
Le circuit

Connectez le circuit comme indiqué sur le schéma, en montant le LoLin et le BME280 sur le maillage imprimé en 3D comme indiqué sur la photo.

BME280 -> Lilon

  • VCC -> 3,3 V
  • GND -> GND
  • SCL -> D1
  • SDA -> D2

LiLon -> LiLon

D0 -> RST (cela est nécessaire pour réveiller le contrôleur du sommeil profond, mais ne doit être connecté qu'une fois le code téléchargé sur le contrôleur)

REMARQUE

J'ai eu des difficultés à obtenir une batterie LiLon appropriée. De plus, pour une raison quelconque, je n'ai pas réussi à alimenter via VIN. J'ai donc alimenté comme suit:

  • La sortie du TP4056 a été câblée au connecteur USB mâle qui a ensuite été branché sur la prise USB de la carte afin de l'alimenter.
  • B- et B+ sur le TP4056 étaient connectés au support de piles AA qui contenait les piles NiMH.

Étape 3: IoT - Blynk

IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk

"Blynk est une plate-forme IoT indépendante du matériel avec des applications mobiles personnalisables, un cloud privé, un moteur de règles et un tableau de bord d'analyse de gestion des appareils". Fondamentalement, il vous permet de gérer et de surveiller en toute sécurité des capteurs à distance de n'importe où dans le monde via Internet. Bien qu'il s'agisse d'un service commercial, chaque compte est accompagné de 2000 crédits gratuits. Les crédits vous permettent d'associer différentes jauges, affichages, notifications, etc. à votre ou vos capteurs. Bien que le prix de l'abonnement dépasse le budget d'un amateur, les crédits gratuits sont suffisants pour un projet simple comme celui-ci.

Pour commencer à utiliser le service, vous devez d'abord télécharger l'application Blynk sur votre téléphone/appareil, créer un compte (ou vous connecter avec un compte existant), puis créer un nouveau projet comme suit:

  • Choisissez votre matériel
  • Donnez un nom à votre projet (dans ce cas j'ai utilisé "Weather Station".
  • Cliquez sur "Créer"
  • Vous recevrez ensuite un code d'autorisation par e-mail.

Vous n'aurez pas besoin d'ajouter les widgets requis. Avec mes 2000 crédits gratuits, j'ai ajouté les éléments suivants:

  • 3 jauges
  • 1 super graphique

Les jauges et les graphiques ont été configurés selon les photos ci-jointes, chacun se voyant attribuer sa propre broche virtuelle qui serait utilisée plus tard dans le code.

Une fois les réglages terminés, vous pouvez appuyer sur le bouton de lecture en haut à droite pour commencer à collecter la date.

Pour plus d'informations voir

docs.blynk.cc/#getting-started.

Étape 4: Code - Préparation de l'IDE Arduino

Les bibliothèques suivantes devront être ajoutées à l'IDE Arduino pour terminer ce projet:

  • https://github.com/adafruit/Adafruit_BME280_Library (besoin du capteur de température, pression et humidité)
  • https://github.com/adafruit/Adafruit_Sensor
  • https://github.com/esp8266/Arduino (cela vous donne accès à la carte ESP8266)
  • https://github.com/blynkkk/blynk-library/releases/tag/v0.6.1 (la bibliothèque Blynk)
  • https://github.com/electronicsguy/ESP8266/tree/master/HTTPSRedirect (HTTPSRedicect nécessaire pour se connecter à Google Sheets)

Pour obtenir des instructions sur l'installation des bibliothèques pour l'IDE Arduino, visitez

Mes paramètres matériels sont les suivants:

  • Carte: NodeMCU 1.0 (module ESP-12E)
  • Vitesse de téléchargement: 115 200

Lorsque vous utilisez le code ci-joint dans les étapes suivantes, veuillez toujours vous référer aux commentaires dans le code en ce qui concerne l'ajout des éléments suivants:

  • SID Wifi
  • Mot de passe WiFi
  • Clé d'autorisation Blynk
  • Identifiant de script Google
  • Clé de partage de feuille Google

Étape 5: Coder - Blynk

J'ai lutté pendant des siècles pour que mon capteur BME280 fonctionne jusqu'à ce que je trouve un exemple contenant la ligne suivante.

statut = bme.begin (0x76); //L'adresse I2C du capteur que j'utilise est 0x76

Il semble que j'avais besoin de définir l'adresse du capteur. Une fois que j'ai fait cela, tout a bien fonctionné.

Blynk a une très belle interface utilisateur mobile, mais présente cependant les limitations suivantes:

  • Seulement 2000 crédits gratuits, les projets nécessitant plus que cela nécessitent un abonnement mensuel coûteux (sauf si vous hébergez et maintenez votre propre serveur Blynk).
  • À moins que vous n'hébergiez votre propre serveur Blynk, vous ne pouvez pas exporter de données historiques.

Pour les raisons ci-dessus, j'ai examiné comment intégrer mon processus de collecte de données dans une feuille Google. Ceci est couvert dans la section suivante.

Étape 6: Coder - Google Sheets

Code - Feuilles Google
Code - Feuilles Google
Code - Feuilles Google
Code - Feuilles Google
Code - Feuilles Google
Code - Feuilles Google

Afin d'enregistrer vos lectures afin que vous puissiez analyser les données historiques à une date ultérieure, vous devez les écrire dans une sorte de base de données. La bibliothèque HTTPSRedirect nous permet de le faire en écrivant nos données dans une feuille Google.

Les principales limites de cette approche sont les suivantes:

  • Pas d'interface utilisateur mobile agréable
  • Une feuille Google peut avoir un maximum de 400 000 cellules. Pour ce projet, ce n'est pas un gros problème car il faudra un peu plus de 11 ans avant que cette limite ne soit atteinte.

La feuille Google est configurée comme suit.

Créez une feuille Google avec deux feuilles.

Feuille 1: Données

La fiche technique a besoin de 4 colonnes, c'est-à-dire Date/Heure, Température, Humidité, Pression (colonnes A à D). Formatez les colonnes de manière appropriée, par ex. La colonne A doit être " Date Time " afin que la date et l'heure soient affichées dans les cellules.

Fiche 2: Tableau de bord

Créez la feuille de tableau de bord selon les photos ci-jointes, en entrant les formules répertoriées ci-dessous:

  • B2: =counta(Données !B:B)-1
  • B3: =B1+VALEURTEMPS(CONCATENATE("00:", Texte(G7, "0")))
  • B6: =query(Data!A2:D, "Sélectionnez l'ordre B par A desc limite 1")
  • C6: =query(Data!A2:D, "Sélectionnez l'ordre C par A desc limite 1")
  • D6: =query(Data!A2:D, "Sélectionnez l'ordre D par A desc limite 1")
  • B8: =requête(Données !A2:D, "Sélectionnez une commande par B desc limite 1")
  • C8: =query(Data!A2:D, "Sélectionnez une commande par C desc limite 1")
  • D8: =requête(Données !A2:D, "Sélectionner une commande par D desc limite 1")
  • B9: =query(Data!A2:D, "Sélectionnez l'ordre B par B desc limite 1")
  • C9: =query(Data!A2:D, "Sélectionnez l'ordre C par C desc limite 1")
  • D9: =requête(Données !A2:D, "Sélectionnez l'ordre D par la limite de desc D 1")
  • B11: =query(Data!A2:D, "Sélectionnez A où B n'est pas un ordre nul par B asc limite 1")
  • C11: =query(Data!A2:D, "Sélectionnez A où C n'est pas un ordre nul par C asc limite 1")
  • D11: =query(Data!A2:D, "Sélectionnez A où D n'est pas un ordre nul par D asc limite 1")
  • B12: =query(Data!A2:D, "Sélectionnez B où B n'est pas un ordre nul par B asc limite 1")
  • C12: =query(Data!A2:D, "Sélectionnez C où C n'est pas un ordre nul par C asc limite 1")
  • D12: =query(Data!A2:D, "Sélectionnez D où D n'est pas un ordre nul par D asc limite 1")
  • G3: =4+B2*4+29+17
  • G4: =(G2-G3)/G2
  • G6: =G2/4 G8: =G7*G6
  • G9: =(G8/60)/24
  • G10: =G9/365
  • G11: =(((((G2-G3)/4)*G7)/60)/24/365)

Google Sheets peut contenir un maximum de 400 000 cellules. Ceci est utilisé, avec le fait que chaque lecture utilise 4 cellules, pour calculer combien d'espace il reste et quand il s'épuisera.

Il peut être possible d'améliorer ces formules. Je faisais deux choses ici, c'est-à-dire apprendre la formule de requête, puis écrire une formule de manière à m'aider à me souvenir de la logique qui les sous-tend.

La capture d'écran "Chart Editor" montre la configuration de base du graphique de température. Les autres graphiques ont été créés en utilisant la même configuration. La seule différence entre les graphiques était les valeurs minimales de l'axe vertical (trouvées sous l'onglet Personnaliser). L'onglet Personnaliser contient également d'autres paramètres tels que les noms d'accès, les titres des graphiques, etc.

Nous avons maintenant besoin d'un Google Script qui nous permettra d'écrire nos données en appelant une URL.

Création du scénario

Dans l'URL de la feuille Google, notez la clé entre le " d/ " et " /edit ". Il s'agit de votre -votre-clé-de-partage-Google-Sheet- et sera nécessaire dans le code ci-dessous.

Ensuite, allez dans Outils > Éditeur de script et créez le script Google App, en collant le code dans le fichier GS joint. Mettez à jour la var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/-Your-Google-Sheet-Sharing-Key–/edit"); pour refléter votre clé de partage.

Publiez maintenant le script en allant dans Publier > Déployer en tant qu'application Web.

Copiez l'URL de l'application Web actuelle et enregistrez-la quelque part car vous en aurez besoin pour extraire le GScriptID (-Votre-Google-Script-ID-). Le GScriptID est la chaîne entre " s/ " et " /exec? ". Assurez-vous que « Tout le monde, même anonyme » a accès à l'application. Au cours de ce processus, il vous sera demandé d'accorder certaines autorisations. Il est important que vous les accordiez.

Remarque: Chaque fois que vous modifiez votre code, vous devez créer une « nouvelle » version du projet et la publier, sinon vous utiliserez toujours le même ancien code.

Vous pouvez maintenant tester le script en accédant à https://script.google.com/macros/s/-Your-Google-Script-ID–/exec?Temperature=10&Humidity=11&Pressure=12. Chaque fois que vous actualisez ce lien, une nouvelle entrée doit être ajoutée à la feuille Google.

Ce qui précède est tiré du tutoriel suivant: https://embedded-lab.com/blog/post-data-google-sheets-using-esp8266/. Ce didacticiel est cependant obsolète et le code Arduino associé dans la section suivante a été modifié pour s'adapter aux dernières bibliothèques

Le code Arduino

Voir code ci-joint.

Étape 7: Code - Blynk & Google Sheets

Afin de tirer le meilleur parti des deux mondes, on peut combiner le code pour Blynk et Google Sheets.

Voir code ci-joint.

Étape 8: Commentaires finaux

Commentaires finaux
Commentaires finaux
Commentaires finaux
Commentaires finaux

Aucune de ces idées ne sont mes idées, mais plutôt un projet construit sur les idées et le travail des autres. J'ai aimé le rassembler au même endroit. en utilisant différentes technologies et outils pour réaliser un projet amusant et pratique. J'ai particulièrement aimé apprendre à stocker mes lectures dans une feuille Google. Pour cela, je tiens à remercier ElectronicsGuy (Sujay Phadke).

Mettre à jour

Après avoir terminé ce projet, je devais modifier mes paramètres sans fil. Je travaillais maintenant sur un autre ordinateur. Après avoir téléchargé les modifications, le projet a cessé de fonctionner. Après quelques dépannages, j'ai conclu que la fonction de veille profonde échouait. J'ai ramené le projet à la maison et l'ai téléchargé là-bas (en utilisant le même code) et cela a fonctionné. J'en ai donc conclu que quelque chose a dû changer dans les bibliothèques que j'ai ajoutées. J'ai donc attaché les bibliothèques qui sont actuellement sur mon ordinateur personnel à cette section; juste au cas où quelqu'un d'autre rencontre ce problème.

Conseillé: