Boîte aux lettres avec notification par e-mail et panneau solaire

L'article de blog suivant nous a été envoyé par notre client Helmut Schmidt. Il s'agit d'une boîte à lettres qui envoie des notifications par e-mail lorsque le courrier a été déposé. L'alimentation électrique a été réalisée à l'aide de petits panneaux solaires et de batteries rechargeables. Bonne lecture et bon bricolage :

La boîte à lettres a été construite en collaboration avec un groupe de travail d'une maison de retraite et de soins. L'idée était d'équiper les boîtes aux lettres d'une notification par e-mail. Dès que quelqu'un dépose une liste de souhaits, un courriel est envoyé à un groupe de bénévoles, les Green Ladies. Après tout, personne ne va vérifier les boîtes aux lettres tous les jours. Le résultat est une boîte aux lettres avec un module solaire et un ESP8266 D1 mini. Le programme utilise le Deep Sleep mode jusqu'à ce qu'une liste de souhaits soit insérée ou que la porte de la boîte aux lettres soit ouverte.

circuit

Matériel requis

1

D1 Mini Nodemcu avec module WLAN ESP8266-12F

1

LM2596S Adaptateur secteur DC-DC Module de démarrage

1 ou 2, en fonction de la luminosité ambiante

Mini Solarpanel DEBO SOLAR 0.5w 5V

1

Diode de verre fritté à l'avalanche ultra-rapide BYV 27/200

1

Batterie Li-Ion, 18650, 3,7 V, 2600 mAh avec prise de charge MicroUSB

1

Alternativement batterie Li-ion, 18650, 3,7 V

3

Alternativement nimh piles

1

Support de batterie

1

680 résistances de kohm pour diviseur de tension

2

10 résistances de kohm pour diviseur de tension

2

Micro-interrupteur

2

1 μF condensateurs (Tantalum)

1

diodes communes

1 compteur


Préparations

Télécharger l'administrateur du conseil supplémentaire-ULR
Fichier> Préférences:
http://arduino.esp8266.com/stable/package_esp8266com_index.json

Installer les neuf paquets avec le conseil d'administration
Outils> Conseil> Gestionnaire du conseil d'administration:
esp8266 by ESP8266 Community

Après l'installation, vous trouverez toutes les cartes ESP8266. Sélectionnez LOLIN(WEMOS) D1 mini&R2.

Sous Fichier > Exemples pour D1 mini > ESP8266, vous trouverez le LowPowerDemo avec 10 tests pour le sommeil du modem, le Light Sleep mode et le Deep Sleep mode.

Cet article de blog a déjà décrit en détail comment les G-mails peuvent être envoyés via l'ESP8266 :

https://www.az-delivery.de/fr/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/g-mails-per-esp

Dans le blog post Envoyer des g-mails via esp8266 A déjà décrit en détail comment les g-mails peuvent être envoyés via ESP8266. Cela a encore besoin de sa propre bibliothèque de github.com être chargé. Ensuite vous pouvez Sketch> Ajouter un fichier> Ouvrir Le simplement téléchargé .zip-Choisissez un fichier. plus de Fichier> Exemples de propres bibliothèques > ESP8266SMTPTP Trouvez le programme G-Mail.

Il est fortement recommandé de créer votre propre compte de messagerie pour envoyer des messages à votre adresse électronique personnelle principale. N'utilisez pas votre adresse électronique personnelle principale pour éviter de bloquer ou de désactiver temporairement votre compte par accident. Pour l'expérimentation, il est recommandé d'utiliser un compte Gmail.com pour envoyer les e-mails. L'e-mail du destinataire peut être votre e-mail personnel.

Tous les détails concernant la création d'un compte et d'une adresse électronique Gmail.com se trouvent sur ce lien.

Connexion entre le module solaire, la batterie et l'ESP8266

Le cahier des charges prévoyait une application à faible coût avec un ou deux panneaux solaires. Les batteries Ni-MH normales présentent l'inconvénient d'une autodécharge relativement élevée, de l'ordre de 15 à 25 % par mois. Entre-temps, il existe déjà de meilleures batteries Ni-MH avec une autodécharge de seulement 15% de perte en un an, mais à un prix similaire à celui des Li-Ion. Deux panneaux solaires fournissent plus de 5 V et généralement plus de 10 V en cas de luminosité ambiante normale. Sous charge, la tension est généralement inférieure à la tension de charge maximale. Grâce à la fonction de protection dans la batterie Li-Ion elle-même (ou avec l'adaptateur d'alimentation DC-DC LM2596S), des tensions de 7 V ne posent aucun problème. Cependant, les batteries Ni-MH doivent être chargées à un maximum de 1,4 V. Un 18650, 3,7 V, 2600 mAh, avec prise de charge MicroUSB a également été choisi comme batterie Li-Ion. Cela signifie que le circuit de protection est déjà intégré dans la batterie. Les premiers essais en extérieur ont montré une charge suffisante par les panneaux solaires, tant pour les batteries NiMH que LiIon. De toute évidence, le circuit de protection consomme plus de courant aux faibles courants de charge que ce qui est stocké dans les batteries. Une possibilité serait d'utiliser une batterie Li-Ion sans circuit de protection intégré uniquement en limitant le courant par commutation avec l'ESP8266.

Pour éviter la surcharge, le Deep Sleep mode est brièvement interrompu par le temporisateur RTC pour une mesure de tension. Si, par temps chaud, la tension est proche de la tension de charge maximale, le Wifi est activé et la tension est ramenée à la norme. La mesure est faite avec analogRead(pin_voltage) à GPIO A0. Le Wemos D1 mini a déjà un diviseur de tension de 220 kOhm / 100 kOhm intégré, avec une résistance interne de 320 kOhm. Si vous ajoutez une autre résistance de 680 kOhm entre A0 et Vin, la gamme de tension est étendue de 1 V à (680 + 320)/320 = 3,1 * 3V = 9,3 V. La tension mesurée doit donc être compatible avec la tension mesurée. La tension mesurée doit donc être multipliée par le facteur 9,3.

construction

Si la tension descend près de la tension de fin de décharge, la première chose à faire est de charger la batterie pendant un certain temps. La tension de décharge finale pour les batteries Li-Ion est de 3,5 V, et de 1,1 V pour les batteries Ni-MH. Pour s'assurer qu'il n'y a pas de courant inverse entre la batterie et le panneau solaire, le panneau solaire et le convertisseur sont reliés par une diode BYV 27/200. La tâche réelle de l'ESP8266 est effectuée par WAKEUP. Il est conseillé de charger au préalable le LowPowerDemo sur l'ESP8266 afin d'essayer toutes les possibilités. Il est préférable de faire fonctionner l'ESP8266 avec une source de tension externe et d'afficher la consommation de courant avec un appareil de mesure. Avec runTest6 en Light Sleep mode, la consommation minimale de courant est de 0,9 mA, en Deep Sleep mode seulement 0,15 mA. Cependant, la veille profonde n'autorise qu'un seul signal externe pour le réveil. Le timer RTC fonctionne également en Deep Sleep mode. Dès que le temps de ESP.deepSleep(microsecondes) est écoulé, LOW est appliqué à D0/GPIO16. Si D0 et RST sont connectés, l'EPS8266 est réinitialisé. Pour pouvoir évaluer d'autres signaux, des diviseurs de tension composés chacun d'une résistance et d'un condensateur sont nécessaires (voir le circuit).

schéma

Les symboles des LED derrière la diode BYV 27/200 représentent les modules solaires. Le commutateur (représenté sur les photos sous la forme d'un module d'interrupteur à positions multiples) déconnecte ou ouvre la connexion à la batterie.

Dès qu'une lettre est insérée, le niveau LOW est appliqué via un microcontact D5. Lorsque la boîte aux lettres est ouverte, LOW est à D7. La réinitialisation s'effectue brièvement via le condensateur. L'ESP8266 démarre et enregistre les entrées de D5 et D7. La constante de temps doit être aussi courte que possible pour que le pic effectue la réinitialisation en toute sécurité, mais que l'entrée de D5 et D7 soit toujours LOW. La diode entre RST et D0 permet également de programmer l'ESP8266.

D1 Mini câblé

Il est également important de surveiller l'état du WiFi. S'il n'y a pas de connexion au réseau, la tentative de connexion est abandonnée après wifiTimeout = 60 secondes. La tentative suivante est effectuée par la minuterie après environ 71 minutes. Si la connexion au réseau n'est toujours pas établie après un temps plus long, la tension tombe en dessous de la tension minimale et, comme décrit ci-dessus, la batterie est d'abord rechargée. L'événement déclencheur est enregistré dans l'EEPROM.

Calcul de la consommation d'électricité

Sans panneaux solaires, la consommation en Deep Sleep mode est de 0,15 mA . En supposant un courriel par jour, la consommation est d'environ 60 mA pendant environ 30 secondes. Par jour, cela donne 0,15 mA * 24 h + 60 mA * 1/60 / 2 h = 4,1 mAh. Avec une batterie Li-Ion de 2600 mAh, le D1 mini pourrait donc fonctionner en continu pendant 2600 * 70% / 4,1 h = 440 jours. Même à la luminosité ambiante, les deux modules solaires fournissent environ 0,5 mA, ce qui donne environ 0,5 mA * 12 h = 6 mAh. Cela devrait couvrir complètement la consommation électrique. En extérieur, les performances des modules solaires seraient encore meilleures. Pour plus de sécurité, le niveau de charge de la batterie est affiché avec chaque e-mail. Lors de l'envoi, il y a des pics allant jusqu'à 200 mA. Après l'envoi d'un courriel (avec 3 piles NiMH), la même tension a été mesurée après 3 heures qu'avant le courriel. Les mesures de la tension de charge et de décharge par un ampèremètre doivent être prises avec précaution. En particulier au point d'inversion (approximativement U = 0 et I = 0) avec un compteur électronique, la lecture dépend de sa résistance interne. Ainsi, si des valeurs inhabituelles apparaissent, le remède consiste à régler la gamme de mesure sur 10 A, avec des pas de 10 mA.

Batteries

Toutes les batteries ont des avantages et des inconvénients. Une batterie LiFePO4 a une tension de 3,3 V et conviendrait donc, mais elle nécessite également un circuit de protection sûr, car elle ne doit pas être chargée au-dessus de 3,65 V. Les batteries NiMH présentent l'inconvénient d'une autodécharge plus importante. Les NiMH LSD (low self-discharge) sont les meilleures. L'utilisation des batteries LiIon dépend de la luminosité ambiante. Aucune garantie n'est donnée pour les batteries Li-Ion sans circuit de protection. Alternativement, un NodeMCU-32S a également été essayé. La consommation électrique était de 9,8 mA pendant le Deep Sleep mode. On peut dire que le NodeMCU-32S était plus en demi-sommeil qu'en Deep Sleep mode. Le port USB du NodeMCU-32S n'est pas désactivé pendant le Deep Sleep mode. Une consommation de courant inférieure à 20 µA est possible avec le DFRobot FireBeetle ESP32 IoT et le DFRobot FireBeetle ESP-12F (ESP8266) IoT.

Conclusion

Les tests à long terme de la boîte aux lettres avec notification par e-mail et module solaire sont toujours en cours. Le grand problème est de réaliser l'alimentation permanente. Les panneaux solaires ne fournissent pas toujours une tension suffisante et le courant stocké dans les batteries peut ne pas être suffisant. Le passage de l'ESP32 à l'ESP8266 m'a un peu aidé en raison de la moindre consommation d'énergie. Mais il était également important de montrer comment utiliser trois entrées malgré le Deep Sleep mode.

Boites aux lettres

Suggestion d'un capteur météo open source :
https://www.ltspiceusers.ch/threads/opensource-wettersensor-werdegang.392/

Documentation de la bibliothèque ESP8266WiFi :
https://arduino-esp8266.readthedocs.io/en/latest/libraries.html

Vous trouverez ci-joint le programme complet avec des notes ou à télécharger ici :

N'oubliez pas d'entrer les détails de votre compte wifi et de votre compte e-mail (à partir des lignes 36 et 90).
 // mini_solarpanel 5V et batterie Connectez via une diode de verre fritté à l'avalanche ultra-frontale BYV 27/200 //
 
 // auteur:
 // dr. Helmut Schmidt <Grueneengel17@gmail.com>
 
 #include
 #include
 #include
 
 // LIION_AKKU
 // const int int charge voltage_max = 5500; // La tension de charge idéale pour les batteries lithium-ion est d'environ 4,2 volts. Batterie de lion protégée de la surtension
 // const int int charge voltage_min = 3500; // tension de décharge
 
 // pour nimh_akkus
 octet N_akkus = 3;
 contam int TENSION DE CHARGEMENT_MAX = N_akkus * 1400;  // Tension de charge max. 1,4 V pour NIMH_AKKU
 contam int TENSION DE CHARGEMENT_MIN = N_akkus * 1100;  // Voltage de décharge = 3.3 V minimum sous charge
 
 
 int tension;
 contam int Pin_ Tension = Août;
 
 octet Flag_post = faux, Flag_Lustration = faux,
 
 uint16_t Exceptionnel_email = 0;
 uint16_t e-mail = 0;
 uint32_t temps libre = 60E3;  // 60 Deuxième fois sur la connexion WiFi
 
 // pour w a k e u p //
 #define bouton bouton_leung 13 // d7 / gpio13
 #define Taster_post 14// d5 / gpio14
 #define wake_up_pin 0 // wake_up_timer est connecté à d0 / gpio16 dans esp8266 >> d0 provoque une réinitialisation
 
 // pour wifi //
 // Entrez votre configuration WiFi ci-dessous
 contam Char * Ap_sid = "Nom du réseau WiFi";                // nom du réseau wifi
 contam Char * Ap_pass = "Mot de passe réseau wifi";            // mot de passe réseau wifi
 
 
 annuler d'installation() {
   punaise(Wake_up_pin, Input_Pullup);
   punaise(Taston_lection, Input_Pullup);
   punaise(TASTON_POST, Input_Pullup);
 
   SI (digitalRead(Taston_lection) == Faible) Flag_Lustration = vrai;    // bouton poussé
   SI (digitalRead(TASTON_POST) == Faible) Flag_post = vrai;
 
 // s p a n n u n g s k o n t r o l e
 // la résistance intérieure dans Wemos D1 Mini est de 320 kohm avec un diviseur de tension de 680KOHM / 320 kohm devrait
 // Le matériau est la conversion du facteur 3.1 * 3 = 9.3. Tension à Mvolt.
   tension = analogique(Pin_ Tension) * 9.3;
 /////////////////// // e ///// /////www.hrägnänd
 // tension = 4000;
 
   // Données de l'EEPROM
   Eeprom.Commencer(512);
   Exceptionnel_email = Eeprom.en train de lire(0); e-mail = Eeprom.en train de lire(4);
 
   SI (Flag_post == faux && Flag_Lustration == faux && tension < TENSION DE CHARGEMENT_MAX && Exceptionnel_email == 0)  Espiègler.sommeil profond(0XFFFFFFFFFFFF);   // Continuer à dormir
 
 // n'actifie pas le WiFi à la poste et aux sous-tensions
   SI (tension < TENSION DE CHARGEMENT_MIN) {
     SI (Flag_post == vrai) {                // profondsleep o h n e wifi
       Exceptionnel_email++;
       Eeprom.l'écriture(0, Exceptionnel_email);  Eeprom.s'engager();
       En série.Commencer(115200);  En série.Imprimeur("Exceptionnel_email" + Chaîne (Exceptionnel_email)); // seulement pour tester
    }
     Espiègler.sommeil profond(0XFFFFFFFFFFFF);               // convertir
  }
 
   Eeprom.Commencer(512);
   En série.Commencer(115200);
   En série.Imprimeur();                                    
   En série.Imprimeur("Voltage =" + Chaîne(tension) + "Mvolt");
   En série.Imprimeur("Commencez");
 
   Wifi.persistant(faux);    // ne stocke pas la connexion à chaque fois pour enregistrer l'usure sur le flash
   Wifi.Mode(Wifi_sta);
   Wifi.SetOutputPower(10);   // réduire la puissance de sortie RF, augmenter s'il ne se connecte pas
   Wifi.Commencer(Ap_sid, Ap_pass);
   En série.imprimer(F("Connexion au wifi"));            
   En série.Imprimeur(Ap_sid);
 
   int wifitime = millis() + temps libre;          // ou 60 secondes
   Pendant que (Wifi.statut() != Wl_connected && wifitime > millis()) {
     En série.imprimer(".") ;                      
     retard (1000);
  }
   SI (Wifi.statut() == Wl_connected) {
     Smtp.se soucier("Large@gmail.com")
    .SetPassword("Mot de passe")
    .Matière("Matière")
    .partir("De")
    .setforgmail();                        // définit simplement le port sur 465 et SetServer ("smtp.gmail.com");
 
     SI (Flag_post == vrai || Exceptionnel_email > 0) {
       e-mail++;  Eeprom.l'écriture(4, e-mail); Exceptionnel_email = 0; Eeprom.l'écriture(0, Exceptionnel_email);
       Smtp.Diffuser("Dr.h.schmidt@online.de", Chaîne(tension) + "Mvolt \ r" + Chaîne(e-mail) + "Une liste de souhaits est entré dans la boîte aux lettres de la gare 2");
    }
     Autre SI (Flag_Lustration == vrai ) {
       Smtp.Diffuser("Dr.h.schmidt@online.de", Chaîne(tension) + "Boîte aux lettres Mvolt \ R sur la gare 2");
       Exceptionnel_email = 0; Eeprom.l'écriture(0, Exceptionnel_email); Eeprom.l'écriture(4, 0);
    }
     Autre SI (tension > TENSION DE CHARGEMENT_MAX) {
       Smtp.Diffuser("Dr.h.schmidt@online.de", "Voltage de surtension =" + Chaîne(tension) + "Mvolt email =" + Chaîne(e-mail) + "Email exceptionnel =" + Chaîne(Exceptionnel_email));      // Commentaire sur éventuellement
       Eeprom.s'engager();
       Espiègler.sommeil profond(0x10000000) ;      /// toutes les 10 secondes pour la dégradation des surtensions
    }
 //////// que pour tester la minuterie
        Autre SI (vrai) {
           Smtp.Diffuser("Dr.h.schmidt@online.de", "Email =" + Chaîne(e-mail) + "Email exceptionnel =" + Chaîne(Exceptionnel_email) +  "Voltage =" + Chaîne(tension) + "Mvolt");      // Commentaire sur éventuellement
        }  
 ///////
  }
 
   Eeprom.s'engager();
   Espiègler.sommeil profond(0XFFFFFFFFFFFF); // Nombre de microsecondes de microsecondes pour dormir. La valeur maximale est 4294967295US ou ~ 71 minutes.
   // Il ne veut jamais arriver ici!
 }
 
 annuler boucle() {   // Il ne veut jamais arriver ici!
 }
 
 ///////// pour le bon usage, commencez toutes les commandes d'impression série //////////////
Merci à M. Schmidt pour sa contribution.
Esp-8266Maison intelligenteSource de courant

2 commentaires

Andreas Wolter

Andreas Wolter

@Winfried Gräf: der Beitrag (samt Schaltung) wurde noch einmal aktualisiert. Danke für den Hinweis.

Winfried Gräf

Winfried Gräf

Stimmt der Schaltplan ? Schalter ?

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Messages de blogs recommandés

  1. Installez maintenant ESP32 via l'administrateur de la carte
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA-Over the Air-ESP Programmation par WiFi

Produits recommandés