Table des matières:

Station météo NaTaLia : Station météo à énergie solaire Arduino bien faite : 8 étapes (avec photos)
Station météo NaTaLia : Station météo à énergie solaire Arduino bien faite : 8 étapes (avec photos)

Vidéo: Station météo NaTaLia : Station météo à énergie solaire Arduino bien faite : 8 étapes (avec photos)

Vidéo: Station météo NaTaLia : Station météo à énergie solaire Arduino bien faite : 8 étapes (avec photos)
Vidéo: Niska sur le tournage avec shay 2024, Juin
Anonim
Station météorologique NaTaLia: la station météorologique à énergie solaire Arduino a fait le bon chemin
Station météorologique NaTaLia: la station météorologique à énergie solaire Arduino a fait le bon chemin
Station météo NaTaLia: la station météo alimentée par énergie solaire Arduino a fait le bon chemin
Station météo NaTaLia: la station météo alimentée par énergie solaire Arduino a fait le bon chemin

Après 1 an de fonctionnement réussi sur 2 sites différents, je partage mes plans de projet de station météorologique à énergie solaire et j'explique comment elle a évolué pour devenir un système qui peut vraiment survivre sur de longues périodes grâce à l'énergie solaire. Si vous suivez mes instructions et utilisez exactement les mêmes matériaux que ceux répertoriés, vous pouvez construire une station météorologique solaire qui fonctionnera pendant de nombreuses années. En fait, le seul facteur limitant sa durée de fonctionnement est la durée de vie de la batterie que vous utilisez.

Étape 1: Fonctionnement de la station météo

1, émetteur: boîtier monté à l'extérieur avec panneau solaire qui envoie périodiquement la télémétrie météorologique (température, humidité, indice de chaleur, force solaire) à l'unité de réception intérieure.

2, Récepteur: Unité intérieure fabriquée à partir d'un Raspberry PI 2 + Arduino Mega ayant un récepteur RF 433 Mhz connecté pour la réception de données. Dans ma configuration, cet appareil n'a aucune fonctionnalité d'affichage LCD local. Il court sans se soucier. Un programme C principal s'occupe de recevoir les données entrantes de l'Arduino via la série, puis de les enregistrer dans un fichier texte et de rendre les dernières données reçues disponibles via telnet pour que d'autres appareils les interrogent.

La station contrôle les lumières de ma maison par la lecture de la photorésistance (qui détermine s'il fait jour ou nuit à l'extérieur). Le récepteur est sans tête dans mon cas mais vous pouvez facilement modifier le projet pour ajouter un écran LCD. L'un des appareils qui utilise, analyse et affiche les données météo de la station est mon autre projet: Ironforge le grille-pain NetBSD.

Étape 2: premières versions

Premières versions
Premières versions
Premières versions
Premières versions
Premières versions
Premières versions
Premières versions
Premières versions

Il existe de nombreux projets solaires sur le net, mais beaucoup d'entre eux commettent l'erreur courante selon laquelle le système retire plus d'énergie de la batterie au fil du temps que le panneau solaire pourrait reconstituer, en particulier pendant les mois d'hiver nuageux et sombres.

Lorsque vous concevez un système à énergie solaire, la seule chose qui compte est la CONSOMMATION D'ÉNERGIE, sur tous les composants: mcu, émetteur radio, régulateur de tension, etc.

Utiliser un gros ordinateur comme un raspberry pi ou un appareil wifi gourmand en énergie comme l'ESP juste pour collecter et transporter quelques bits de données météorologiques serait exagéré, mais comme je le montrerai dans ce tutoriel, même une petite carte Arduino l'est.

Le mieux est de toujours mesurer le courant pendant votre processus de construction avec un compteur ou avec un oscilloscope (utile lorsque vous essayez de mesurer de petites pointes d'utilisation pendant l'opération dans des délais très courts (millisecondes)).

Sur la première photo, vous pouvez voir ma première station (Arduino Nano Based) et la deuxième carte Arduino Barebone Atmega 328P.

La première version, même si elle fonctionnait parfaitement (environnement de surveillance et envoi de données par radio) avait une consommation électrique trop élevée ~ 46mA et vidait la batterie en quelques semaines.

Toutes les versions utilisaient la batterie suivante:

Carte de protection intégrée de batterie rechargeable Li-ion protégée 18650 6000mAh

MISE À JOUR sur ces batteries ScamFire. Bien qu'il s'agisse d'un Instructable assez ancien, je me sentais toujours obligé de le corriger en raison de cette fausse batterie. N'achetez PAS la batterie mentionnée, faites vos propres recherches sur les autres batteries LION/LIPO, toutes les batteries 3.7V fonctionneront avec ce projet.

Enfin, j'ai eu le temps de démystifier la batterie ScamFire pour voir quelle est sa capacité réelle. Nous allons donc faire 2 calculs côte à côte avec les capacités réelles et "annoncées".

Tout d'abord, c'est une chose que cette batterie est fausse et rien de ce qu'ils prétendent à ce sujet n'est vrai, les nouvelles versions sont encore pires, elles ont copié le faux en omettant le circuit de protection de 2 centimes donc rien ne les empêchera de se décharger à zéro.

Un petit article sur les batteries LION/LIPO:

TLDR:

Cela signifie que la tension maximale de la cellule est de 4,2 V et que la tension "nominale" (moyenne) est de 3,7 V.

Par exemple, voici un profil de la tension pour une batterie « classique » de 3,7 V/4,2 V. La tension commence à 4,2 maximum et chute rapidement à environ 3,7 V pendant la majeure partie de la durée de vie de la batterie. Une fois que vous avez atteint 3,4 V, la batterie est morte et à 3,0 V, le circuit de coupure déconnecte la batterie.

Mes mesures avec une charge factice:

Batterie chargée: 4.1V

Coupure réglée sur: 3,4 V

Simulation de charge: 0,15 A (mon appareil a eu un peu de mal à descendre plus bas.)

Capacité mesurée: 0.77Ah lui donner un 0.8Ah gratuit soit 800mAh au lieu des 6000mAh annoncés !

Étant donné que cette batterie n'avait même pas le circuit de protection, je pouvais librement descendre plus bas, mais à 3,4 V après 10 minutes, elle tombe déjà en panne à 3,0 V.

Par conséquent, avec des calculs simples, la batterie fournit:

Théorique

Tension de la batterie = 3,7 V

Puissance =3.7x6000= 22000 mWh

Réel

Tension de la batterie =3.7VPower =3.7x800= 2960 mWh

Version: 0.1 ARDUINO NANO BASÉ

Même avec la bibliothèque LowPower, un Arduino nano consomme ~ 16 mA (en mode veille) -> FAIL.

Théorique

Pavg=VxIavg =5Vx16mA= 80 mW

Autonomie de la batterie = 22000/80 = 275 heures = 11 jours environ

RealPavg=VxIavg =5Vx16mA= 80 mW

Autonomie de la batterie = 800/80 = 10 heures

Version: 0.2 Atmega 328P Barebone

La puissance consommée par un ATmega328 dépend beaucoup de ce que vous en faites. Juste assis là dans un état par défaut, il peut utiliser 16mA @ 5V tout en fonctionnant à 16MHz.

Lorsque l'ATmega328P est en mode actif, il exécute en continu plusieurs millions d'instructions par seconde. En outre, le convertisseur analogique-numérique des périphériques embarqués (ADC), l'interface périphérique série (SPI), la minuterie 0, 1, 2, l'interface à deux fils (I2C), l'USART, la minuterie de surveillance (WDT) et la détection de baisse de tension (BOD) consomment de l'énergie.

Pour économiser de l'énergie, le MCU ATmega328P prend en charge un certain nombre de modes de veille et les périphériques inutilisés peuvent être éteints. Les modes de sommeil diffèrent par les parties qui restent actives, par la durée du sommeil et le temps nécessaire pour se réveiller (période de réveil). Le mode veille et les périphériques actifs peuvent être contrôlés avec les bibliothèques de veille et d'alimentation AVR ou, plus concis, avec l'excellente bibliothèque Low-Power.

La librairie Low-Power est simple à utiliser mais très puissante. L'instruction LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); met le MCU en SLEEP_MODE_PWR_DOWN pendant 16 ms à 8 s, selon le premier argument. Il désactive l'ADC et le BOD. La mise hors tension signifie que toutes les fonctions de la puce sont désactivées jusqu'à la prochaine interruption. De plus, l'oscillateur externe est arrêté. Seules les interruptions de niveau sur INT1 et INT2, les interruptions de changement de broche, la correspondance d'adresse TWI/I2C ou le WDT, s'il est activé, peuvent réveiller le MCU. Ainsi, avec le relevé unique, vous minimiserez la consommation d'énergie. Pour un Pro Mini 3,3 V sans LED d'alimentation et sans régulateur (voir ci-dessous) qui exécute le relevé, la consommation énergétique est de 4,5 A. C'est très proche de ce qui est mentionné dans la fiche technique ATmega328P pour la mise en veille avec WDT activé de 4,2 A (fiche technique liée aux sources). Par conséquent, je suis assez confiant que la fonction powerDown arrête tout ce qui est raisonnablement possible. Avec l'instruction LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);, le WDT sera désactivé et vous ne vous réveillerez pas tant qu'une interruption n'est pas déclenchée.

Ainsi, avec la configuration barebone, nous pouvons mettre la puce en mode veille pendant 5 minutes, alors qu'elle consomme très peu d'énergie (0,04 mA sans périphériques). Cependant, il ne s'agit que de la puce Atmega 328P avec l'oscillateur à cristal et rien d'autre, l'amplificateur de tension utilisé dans cette configuration pour augmenter la tension de la batterie de 3,7 V -> 5,0 V consomme également 0,01 mA.

Un drain de tension constante était la photorésistance ajoutée augmentant la consommation en mode veille à 1 mA global (cela inclut tous les composants).

La formule de calcul de la consommation précise de l'appareil en mode veille et réveil est la suivante:

Iavg = (Ton*Ion + Tsleep*Sleep) / (Ton +Tsleep)

Ion = 13mA

Cela vient principalement de l'émetteur RF433 Mhz:

Émetteur:

Tension de fonctionnement: 3 V - 12 V pour max. Consommation électrique 12VCourant de travail: max Moins de 40mA max et min 9mAR Mode de résonance: (SAW)Mode de modulation: ASKFréquence de travail: Eve 315MHz ou 433MHzPuissance de transmission: 25mW (315MHz à 12V)Erreur de fréquence: +150kHz (max)Vitesse: moins de 10Kbps

Isleep = 1mA

Ce serait nettement moins sans la photorésistance.

Temps Trunon Ton=250 mS = 0.25s

Temps de sommeil Tsleep= 5 min = 300s

Iavg = (Ton*Ion + Tsleep*Sleep) / (Ton +Tsleep)

Iavg = (0,25s*13mA + 300s*1mA) / (0,25s+300s)

Imoy=1.26mA

Pavg=VxIavg =5Vx1.26mA=6 mW

Théorique

Autonomie de la batterie = 22 000 mWh/6 mW = 3 666 heures = 152 jours environ

Réel

Autonomie de la batterie = 800 mWh/6 mW = 133 heures = 5,5 jours environ

Bien qu'il s'agisse encore d'une meilleure série UltraFire que j'ai utilisée au départ, vous pouvez voir que sans le panneau solaire ou la faible consommation de 1 mA, ce projet ne survivrait pas longtemps.

N'hésitez pas à construire la station et à noter vos découvertes et vos calculs dans les commentaires et je mettrai à jour l'article. J'apprécierais également les résultats avec différents MCU et convertisseurs boost.

Étape 3: Construire une station météo réussie

Construire une station météo réussie
Construire une station météo réussie
Construire une station météo réussie
Construire une station météo réussie
Construire une station météo réussie
Construire une station météo réussie
Construire une station météo réussie
Construire une station météo réussie

Bien qu'il s'agisse de la première version réussie, elle contient un petit défaut sur les photos et je ne peux pas les refaire car les stations sont déjà déployées. Les deux amplificateurs de tension montrés sur l'image sont disponibles au moment de la rédaction pour l'aéromodélisme et d'autres applications. Lorsque j'ai repensé ma station, je pensais obtenir une carte d'élévation de tension plus petite et plus efficace, mais une taille plus petite ne signifie certainement pas qu'elle est plus efficace.

Le nouveau petit module sur la photo qui n'a même pas de led indicateur a en fait drainé 3mA (*FAIL*) tout seul, donc je suis resté avec mon ancienne carte:

PFM Control DC-DC USB 0.9V-5V à 5V DC Boost Module d'alimentation élévateur

Au moment d'écrire ces lignes, ce module est toujours disponible sur Ebay pour 99 centimes mais si vous décidez d'utiliser un autre booster, vérifiez toujours la consommation électrique en veille. Avec un booster de bonne qualité ça ne devrait pas être plus que le mien (0,01 mA), bien que la petite LED à bord ait dû être dessoudée.

Étape 4: liste du matériel

Liste du matériel
Liste du matériel
  • Carte de protection intégrée de batterie rechargeable Li-ion protégée 18650 6000mAh
  • Atmega 328P16M 5V avec chargeur de démarrage
  • Kit Adafruit DC Boarduino (compatible Arduino) (avec ATmega328) < ce sera un bon investissement si vous réalisez de futurs projets barebone
  • Photorésistance photosensible Optorésistance photorésistance 5mm GL5539
  • Diode 1A 1000V 1N4007 IN4007 DO-41 Diodes de redressement
  • PFM Control DC-DC USB 0.9V-5V à 5V DC Boost Module d'alimentation survolteur
  • 1.6W 5.5V 266mA Mini système de module de panneau solaire chargeur de cellules époxy bricolage
  • Module de chargeur de carte de charge de batterie au lithium TP405 5V Mini USB 1A
  • Kit de liaison émetteur et récepteur RF 433Mhz pour télécommande Arduino/ARM/MC < Kit, contient à la fois l'émetteur et le récepteur
  • Boîtier étanche extérieur de boîte de jonction de protecteur de commutateur IP65 150x110x70mm
  • Nouveau module de capteur de température et d'humidité relative DHT22 pour Arduino
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1xMini Switch, 1x1N4007diode
  • Résonateur / Oscillateur Céramique Adafruit 16 MHz [ADA1873]
  • Arduino UNO/Mega etc pour station réceptrice + Raspberry PI 1/2/3
  • Boîte en plastique acrylique transparent (facultatif)

Vous pouvez trouver tout cela sur Ebay, je ne veux pas promouvoir de vendeurs en créant des liens vers leurs pages et les liens deviendront morts à l'avenir de toute façon.

Notes pour la liste du matériel:

Juste au cas où vous briqueriez l'Atmega d'une manière ou d'une autre avec la programmation, achetez-en plus, il en va de même pour l'amplificateur de tension et le contrôleur de charge solaire.

Le chargeur solaire contient 2 petites LED de couleur qui ne s'allument qu'en cas de charge solaire et indiquent (rouge-> charge, bleu-> états complètement chargés). Ceux-ci peuvent également être dessoudés. Cela donne plutôt un peu plus de jus supplémentaire à la batterie pendant la charge.

Comme vous le voyez, il n'y a pas de supports de batterie sur ma liste. Pourquoi? Parce qu'ils ne sont pas fiables. J'ai eu d'innombrables occasions où la batterie est sortie de son support et a perdu la connexion. Surtout si votre configuration est montée sur un poteau haut comme le mien, ouvert à toutes les conditions météorologiques difficiles. J'ai même zippé la batterie dans le support avec 2 fermetures à glissière et elle a quand même réussi à sortir. Ne le faites pas, retirez simplement le revêtement externe de la batterie et soudez les fils directement dans le bas de la batterie, contenant le circuit de protection contre les surcharges (ne contournez pas la protection). Un support de batterie peut être utilisé uniquement pour maintenir la batterie en place dans l'appareil.

Carte de charge de batterie au lithium TP405 5V Mini USB 1A: malheureusement, cette carte n'inclut pas de protection contre le courant inverse au panneau solaire, pour cela, vous aurez besoin d'une diode supplémentaire à placer entre une jambe du panneau solaire et le circuit de charge pour arrêter le courant essayant pour refluer dans le panneau solaire la nuit.

Étape 5: Assemblage

Assemblée
Assemblée
Assemblée
Assemblée
Assemblée
Assemblée

Cette carte contient relativement peu de composants et les marqueurs sur la carte sont assez simples.

Assurez-vous de NE PAS insérer l'Atmega328P dans le mauvais sens (cela peut chauffer et briquer la puce, pourrait également détruire le survolteur).

Dans cette configuration, la puce est tournée vers le bas (petit trou en U marquant PIN1). Tous les autres composants doivent être évidents.

Utilisez un câble blindé (par exemple: le câble audio du CDrom fera l'affaire) pour le LDR. Dans certains cas (au cours de plusieurs semaines de test), il s'est avéré qu'il interférait avec la transmission du signal radio. C'était l'un de ces bogues difficiles à résoudre, donc si vous ne voulez pas de problèmes, utilisez simplement un câble blindé, fin de l'histoire.

LED: La LED au bas de la boîte a été initialement ajoutée pour clignoter lorsqu'il y a une transmission radio sortante, mais plus tard, je l'ai considérée comme une perte d'énergie et elle ne clignote que 3 fois au démarrage.

TP: est le point de test pour mesurer le courant pour l'ensemble du circuit.

DHT22: N'achetez pas le DHT11 bon marché, dépensez 50 centimes de plus pour obtenir le DHT22 blanc qui peut également mesurer les températures négatives.

Étape 6: Conception du boîtier

Conception de boîtier
Conception de boîtier
Conception de boîtier
Conception de boîtier
Conception de boîtier
Conception de boîtier

Bien que ce soit un peu exagéré, un cube imprimé en 3D (weather_cube) a été conçu pour maintenir le capteur de température DHT22 en place. Le cube est collé au fond du boîtier IP, ne comportant qu'un seul trou pour que l'air atteigne le capteur. J'ai ajouté un filet au niveau du trou contre les abeilles, guêpes et autres petites mouches.

Un boîtier externe peut être utilisé en option pour rendre la station plus étanche au cas où vous la monteriez sur un poteau de parabole à l'air libre.

Idée pour 1 fonctionnalité utile: ajouter une grande plaque de toit en métal de 1 à 2 cm sur le dessus de la boîte pour fournir de l'ombre au soleil pendant l'été, bien que cela puisse également retirer notre lumière solaire utile du panneau. Vous pouvez imaginer un design qui sépare le panneau et la boîte (en laissant le panneau au soleil, la boîte dans l'ombre).

Sur les photos: une des stations retirée de l'environnement de travail après 1 an, la tension de la batterie est toujours à 3,9 V, aucun dégât d'eau sur aucune partie de la boîte bien que le filet que j'ai collé au bas du cube ait été déchiré. La raison pour laquelle la station avait besoin d'être réparée est un défaut de connexion sur le connecteur LDR, bien que le câble de démarrage semblait toujours en place, la connexion était rompue, donc la broche flottait parfois, fournissant de mauvaises lectures analogiques LDR. Suggestion: si vous utilisez des câbles de démarrage PC standard, collez-les tous après que la station fonctionne parfaitement pour éviter cela.

Étape 7: Logiciel

Logiciel
Logiciel

Le code du logiciel nécessitera 3 bibliothèques externes (LowPower, DHT, VirtualWire). J'ai eu du mal à trouver certains d'entre eux facilement en ligne ces derniers temps, alors je les ai joints dans un fichier ZIP séparé. Quel que soit le système d'exploitation que vous utilisez Linux/Windows, recherchez simplement le dossier de la bibliothèque de votre IDE Arduino et extrayez-les.

Juste une note, même si je déconseille déjà d'acheter le DHT11, si vous utilisez le mauvais type de capteur DHT, le programme se bloquera pour toujours au début de la section d'initialisation (vous ne verrez même pas le voyant de démarrage clignoter 3 fois).

Le code de la boucle principale est très simple, il lit d'abord les valeurs de l'environnement (température, indice de chaleur, humidité, solaire), les envoie par radio puis il utilise la bibliothèque basse consommation pour mettre l'Arduino en veille pendant 5 minutes.

J'ai trouvé que l'abaissement du débit en bauds augmentera la stabilité des transmissions radio. La station envoie une très petite quantité de données, 300 bps sont plus que suffisants. N'oubliez pas non plus que l'émetteur ne fonctionne qu'à partir d'env. 4.8V, dans la future version 3.3V, cela pourrait conduire à une qualité de transmission encore pire (envoi de données à travers les murs et autres obstacles). Je rencontre un problème avec l'utilisation d'un Arduino Mega connecté à un Raspberry PI 2 alimentant le Mega depuis le PI, que je n'ai reçu aucune transmission. La solution consistait à alimenter le Mega à partir d'une alimentation 12V externe séparée.

Étape 8: Version 2 (basée sur ESP32)

Version 2 (basée sur ESP32)
Version 2 (basée sur ESP32)
Version 2 (basée sur ESP32)
Version 2 (basée sur ESP32)
Version 2 (basée sur ESP32)
Version 2 (basée sur ESP32)

Tout ce qui peut se briser se brisera pour citer le bon vieux Murphy et finalement, après des années, les stations ont échoué sur des voies mystérieuses. On a commencé à envoyer des données solaires charabia qui sont allées jusqu'à des dizaines de milliers, ce qui est impossible en raison de: La carte Arduino contient un 6 canaux (8 canaux sur Mini et Nano, 16 sur Mega), un convertisseur analogique-numérique 10 bits. Cela signifie qu'il mappera les tensions d'entrée entre 0 et 5 volts en valeurs entières comprises entre 0 et 1023. Ainsi, après avoir remplacé la radio, le LDR et reprogrammé l'Atmega 328P plusieurs fois, j'ai abandonné et j'ai décidé qu'il était temps d'innover. Allons ESP32.

La carte que j'ai utilisée était une: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi & Bluetooth Card Rev1 MicroPython 4MB FLASH

wiki.wemos.cc/products:lolin32:lolin32_lit…

Microcontrôleur ESP-32

Tension de fonctionnement 3.3V Broches d'E/S numériques 19 Broches d'entrée analogique 6 Vitesse d'horloge (Max) 240Mhz Flash 4M octets Longueur 5mm Largeur 2,54mm Poids 4g

Qui contrairement à celui sur la photo n'a pas le logo LOLIN (contrefaçon de Chine). Ma première agréable surprise a été que le brochage imprimé sur la carte correspondait au brochage Arduino ! Après avoir eu affaire à tant de tableaux sans nom où j'ai dû chercher des brochages toute la journée, fatigué de faire des erreurs, enfin un tableau où le brochage est simple WoW!

Cependant, voici le côté obscur de l'histoire:

Au départ, j'ai connecté le LDR à A15 qui est la broche 12 car il était plus facile de coller les broches ensemble. Ensuite, j'ai 4095 lectures (ce qui est le maximum que vous pouvez obtenir avec AnlogRead sur l'ESP32) ce qui m'a rendu fou parce que toute la raison pour laquelle j'ai reconstruit la station était les lectures LDR cassées de l'ancienne (le DHT fonctionnait toujours bien). Il s'avère donc que:

L'esp 32 intègre deux registres ACD 12 bits. ADC1 avec 8 canaux attachés aux GPIO 32-39 et ADC2 avec 10 canaux dans d'autres broches. Le fait est que l'ESP32 utilise l'ADC2 pour gérer les fonctions wifi, donc si vous utilisez le Wifi, vous ne pouvez pas utiliser ce registre. L'API du pilote ADC prend en charge ADC1 (8 canaux, attachés aux GPIO 32 - 39) et ADC2 (10 canaux, attachés aux GPIO 0, 2, 4, 12 - 15 et 25 - 27). Cependant, l'utilisation d'ADC2 a quelques restrictions pour l'application:

ADC2 est utilisé par le pilote Wi-Fi. Par conséquent, l'application ne peut utiliser ADC2 que lorsque le pilote Wi-Fi n'a pas démarré. Certaines des broches ADC2 sont utilisées comme broches de cerclage (GPIO 0, 2, 15) et ne peuvent donc pas être utilisées librement. C'est le cas des kits de développement officiels suivants:

Donc, connecter le LDR de la broche 12 à A0, qui est le VP, a tout résolu, mais je ne comprends pas pourquoi ils répertorient même les broches ADC2 comme disponibles pour les fabricants. Combien d'autres hobbistes ont perdu des tonnes de temps avant de comprendre cela ? Marquez au moins les broches inutilisables avec du rouge ou quelque chose du genre ou ne le mentionnez pas du tout dans le manuel afin que les autres fabricants ne puissent les découvrir que s'ils en ont vraiment besoin. Tout le but de l'ESP32 est de l'utiliser en WIFI, tout le monde l'utilise en WIFI.

Un bon début pour configurer l'IDE Arduino pour cette carte:

Bien que je l'aie mis dans le code ici, ça recommence:

Ce code pourrait ne pas compiler pour d'autres modèles ESP32 que le Weemos LOLIN 32 !

Paramètres de construction: -Utiliser le téléchargement/série: 115200 -Utiliser le processeur/ram: 240 Mhz (Wifi|BT) -Utiliser la fréquence flash: 80 Mhz

Il y a des tonnes de stations météorologiques basées sur ESP32 sur le net, elles sont bien plus courantes que ma version 1 avec la puce barebone car elles sont plus faciles à installer, vous n'avez pas besoin de programmeur, il suffit de brancher l'appareil sur usb et de le programmer et leur Le mode veille profonde est excellent pour une utilisation prolongée de la batterie. Dès le départ, c'était la toute première chose que j'ai testée avant même de souder les broches de rupture, car comme j'ai noté plusieurs endroits dans ce projet, la chose la PLUS importante est la consommation d'énergie et avec la (fausse) batterie actuelle et le petit panneau solaire la veille la puissance ne peut pas vraiment dépasser 1 à 2 mAs sinon le projet ne pourra pas se maintenir sur le long terme.

Ce fut encore une agréable surprise que le mode sommeil profond fonctionne comme annoncé. Pendant le sommeil profond, le courant était si faible que mon multimètre bon marché ne pouvait même pas le mesurer (fonctionne pour moi).

Lors de l'envoi de données, le courant était d'environ 80 mA (ce qui est environ 5 fois plus que lorsque l'Atmega 328P se réveillait et transmettait), mais n'oubliez pas qu'avec le V1, il y avait une consommation moyenne de 1 mA sur le LDR en mode veille (qui dépendait également des niveaux de lumière et passait de 0,5 mA à 1 mA) qui a maintenant disparu.

Maintenant que la batterie UltraFire est démystifiée si vous utilisez la même batterie, voici ce à quoi vous pouvez vous attendre:

Iavg = (Ton*Ion + Tsleep*Sleep) / (Ton +Tsleep)

Iavg = (2s*80mA + 300s*0.01mA) / (2s+300s) Iavg = 0.5mA

Pavg=VxIavg =5Vx0,5mA=2,5 mW

Théorique

Autonomie de la batterie = 22 000 mWh/2,5 mW = 8 800 heures = 366 jours environ

Réel

Autonomie de la batterie = 800 mWh/2,5 mW = 320 heures = 13 jours environ

Je n'avais pas d'oscilloscope pour mesurer avec précision le temps d'allumage, mais avec mes réglages, il atteint environ 2 secondes.

Je ne voulais pas passer l'après-midi à tout coder sur mesure, alors j'ai cherché d'autres stations météorologiques sur Instructables basées sur ESP32 pour voir ce qu'elles font pour le stockage de données. J'ai malheureusement remarqué qu'ils utilisent des sites inflexibles et limités tels que weathercloud. Comme je ne suis pas un fan du "cloud" et que leur code s'est cassé depuis longtemps car le site a changé d'API depuis, j'ai pris mes 10 minutes pour faire une solution personnalisée car ce n'est pas aussi difficile qu'on pourrait le penser. Commençons!

Tout d'abord, il n'y a pas de photo de carte de circuit imprimé séparément pour ce projet, car il utilise exactement les mêmes composants (désolé pour celle soudée dans l'image de la planche à pain) que le V1 à la différence que tout fonctionne à 3,3 V. Le DHT s'est connecté avec un pullup à VCC, le LDR a baissé avec un 10k. Le problème que l'on pourrait voir avec les batteries 18650 comme mon faux chinois (6500 mAh ultra sun fire lol:D) est qu'elles démarrent la courbe de décharge à partir d'environ 4,1 V new age et vont jusqu'à ce que leur circuit de coupure se déclenche pour arrêter les dommages cellulaires (ceux qui ont la chance de l'avoir). Ce n'est nulle part bon pour nous en tant qu'entrée 3,3V. Bien que cette carte LOLIN ait un connecteur de batterie au lithium et un circuit de charge dans ce projet, je voulais remettre à neuf le maximum de ce que je pouvais de l'ancienne station, donc avec l'ancien 18650, vous NE POUVEZ PAS utiliser ce chargeur intégré. La solution était simple: j'ai coupé un câble micro USB soudé dans le 5V de l'ancien amplificateur de tension et voilà le problème est résolu, puisque la carte du microUSB a un régulateur.

Donc, la différence entre l'ancienne et la nouvelle version qui dans l'ancienne batterie fournit 3,7V -> boostée à 5V -> ardu fonctionne sur 5V -> tous les composants fonctionnent sur 5V.

Dans le nouveau: la batterie fournit 3,7 V -> boostée à 5 V -> régulée via le registre embarqué sur ESP32 -> tous les composants fonctionnent à 3,3 V.

Du point de vue logiciel, nous aurons également besoin d'une autre bibliothèque DHT, la DHT de l'Arduino n'est pas compatible avec celle de l'ESP. Ce dont nous avons besoin s'appelle DHT ESP.

J'ai commencé à baser mon code sur l'exemple DHT fourni par ce code. Le fonctionnement du code est:

1, obtenez les données environnementales des données DHT + solaires de la cellule photoélectrique

2, connectez-vous au wifi avec IP statique

3, POST les données dans un script php

4, allez dormir pendant 10 minutes

Comme vous le remarquerez, j'ai réglé le code pour plus d'efficacité afin de minimiser absolument le temps de réveil, car il consomme 5 fois plus d'énergie que l'ancien projet lorsqu'il est allumé. Comment j'ai fait ça ? Tout d'abord, s'il y a N'IMPORTE QUEL type d'erreur, la fonction getTemperature() retournera avec false (ce qui signifie 10 minutes de sommeil à nouveau). Cela peut être comme si le capteur DHT ne pouvait pas être initialisé ou si la connexion wifi n'était pas disponible. Comme vous le remarquez, la boucle while() habituelle pour continuer à essayer l'association wifi pour toujours a également été supprimée, mais un délai de 1 seconde devait y être laissé, sinon il ne se connectera pas toujours et cela dépend également du type de point d'accès, de la charge, etc. se produira, avec 0,5 s, j'ai eu un comportement incohérent (parfois, il ne pouvait pas se connecter). Si quelqu'un connaît un meilleur moyen de le faire, veuillez le laisser dans les commentaires. Ce n'est que lorsque les données DHT sont lues ET que la connexion wifi est établie qu'il essaiera de publier les données dans le script sur le serveur Web. Toutes sortes de fonctions de perte de temps telles que Serial.println() sont également désactivées en mode de fonctionnement normal. En tant que serveur, j'utilise également IP pour éviter une recherche DNS inutile, dans mon code, la passerelle par défaut et le serveur DNS sont définis sur 0.0.0.0.

Je ne comprends pas pourquoi est-ce si difficile de créer sa propre API alors qu'il suffit:

sprintf(réponse, "temp=%d&hum=%d&hi=%d&sol=%d", temp, hum, salut, sol);

int httpResponseCode =

Vous mettez ce petit code php sur n'importe quel raspberry pi et vous pouvez effectuer des tâches system() immédiatement en fonction de la télémétrie, comme allumer les ventilateurs ou allumer les lumières s'il fait suffisamment sombre.

Quelques remarques sur le code:

WiFi.config(staticIP, passerelle, sous-réseau, DNS); // DOIT être après que le Wifi commence à être stupide…

WiFi.mode(WIFI_STA); // DOIT sinon cela créera également un AP indésirable

Ouais ben maintenant tu sais. De plus, l'ordre des configurations IP peut changer via les plates-formes, j'ai d'abord essayé d'autres exemples où les valeurs de passerelle et de sous-réseau ont été commutées. Pourquoi définir une IP statique ? Eh bien, c'est assez évident, si vous avez une boîte dédiée sur votre réseau comme un serveur Linux exécutant isc dhcpd, vous ne voulez pas une centaine de millions d'entrées de journal à partir du moment où l'ESP se réveille et obtient l'adresse IP du DHCP. Les routeurs n'enregistrent normalement pas les associations, cela ne sera donc pas vu. C'est le prix de l'économie d'énergie.

V2 n'a jamais pu se maintenir en raison de la mauvaise qualité de la batterie et je l'ai simplement mis sur un adaptateur donc si vous voulez construire le V1 ou le V2, n'achetez PAS la batterie mentionnée, faites vos propres recherches sur les batteries (n'importe quel 18650 plus de 2000mAh de capacité annoncée sur Ebay est une arnaque avec une forte probabilité).

Conseillé: