Aktionen

ESP8266 Wemos D1 Mini Batterie Versorgungsspannung auslesen überwachen

Aus znilwiki

Ein Grund das ich mich so für den Wemos D1 Mini begeistere ist das er ganz leicht mit 2 x 1,5V Batterien betrieben werden kann.
Ich hab noch einige Batteriegehäuse für 2 x AA oder 2 x AAA Batterien - und die lege ich einfach an den 3V3 und GND Pin.

Mein erstes Projekt war ein WLAN-Button. Der Taster löst einen Reset aus, der Wemos fährt hoch, ruft eine URL auf und legt sich wieder schlafen.
Mein Messgerät sagt das er im DeepSleep 0,015mA, also 15µm verbraucht.
Beim Boot lese ich die Spannung der Batterien aus und melde diese an meinen Zabbix-Server, ebenfalls per URL-Aufruf: Zabbix sender per Web URL-Aufruf nutzen

Nachfolgend beschreibe ich wie ich das gemacht habe (habe eine Weile Googeln müssen dafür).


1 Schaltung

Für die genaue Messung der Spannung muss der Pin A0 mit 3V3 verbunden werden:
Wemos D1 mini A0-3.3V Steckplatine.png


2 Sketch

Das Sketch gibt die Informationen auf dem Seriellen Monitor aus.
Zusätzlich steht da der Grund für das Booten - Reset oder Stromversorgung hergestellt.

#include <ESP8266WiFi.h> //Ist nur für die Funktionen der Reset-Info eingebunden 

//Spannung auslesen vorbereiten
ADC_MODE(ADC_VCC);
String Ubatt = "";
String ResetOrBoot = "";

void setup() {
  // Serielle Schnittstelle aktivieren für Debugging
  Serial.begin(115200);
  delay(100);
  Serial.println("Setup ...");
  // Grund für den Start erfahren -> Reset oder Stromversorgung hergestellt?
  const rst_info * resetInfo = system_get_rst_info();  // Resetgrund einlesen
  if ((resetInfo->reason) == 6) {
    ResetOrBoot = "Boot (Stromversorgung hergestellt)";
  } else {
    ResetOrBoot = "Reset";
  }
}

void loop() {
  Serial.println();
  // Warum booten wir?
  Serial.println("Auslöser: " + ResetOrBoot);
  Serial.println();
  Serial.print("Versorgungs- oder Batteriespannung:  ");
  // Betriebsspannung auslesen
  // genaue Spannung der Stromquelle, PIN A0 muss mit 3,3V Verbunden werden!
  uint16_t my_getVcc_Voltage = ESP.getVcc();
  float_t my_Voltage_calculated = ((float)my_getVcc_Voltage/1024.0f);
  Ubatt = String(my_Voltage_calculated, 3);
  Serial.println(Ubatt);

  // Und Gute Nacht - bis zum nächsten Reset oder Boot
  ESP.deepSleep(0);
}



3 Testausgabe

Im Seriellen Monitor sollte folgendes erscheinen:

setup ...

Auslöser: Boot (Stromversorgung hergestellt)

Versorgungs- oder Batteriespannung:  3.587


Hier mal die Aufzeichnungen meines WLAN-Buttons:

ClipCapIt-190308-210049.PNG



4 Quellen

Das mit der genauen Spannungsmessung habe ich hierher: https://github.com/esp8266/Arduino/issues/721#issuecomment-325149737
Und das mit dem Reset Grund hierher: https://www.mikrocontroller-elektronik.de/wlan-notruftaster-mit-dem-esp8266-modul/


5 Kommentare


Anonymer Benutzer #1

5 Monaten zuvor
Punktzahl 0++
15uA? Bei meinem messe ich 334uA im DeepSleep. Der integrierte Spannungswandler und USB wandler verbrauchen den Großteil. Der ESP selber kommt mit 15uA hin. Hast du die anderen Bauteile auf dem Wemos entfernt?

BLinz

5 Monaten zuvor
Punktzahl 0++

Nein, nichts entfernt. die 0,015mA zeigt mein Multimeter (Voltcraft MT-52) mir so an. Ich unterstelle das das schon der Verbrauch des Spannungswandlers ist. Ich betreibe meine Wemos mit 2x AA Batterien direkt am 3V Pin, am USB ist nichts angeschlossen.

Ich nutze auch Wemos die direkt an einer USB-Stromversorgung hängen - aber die sind dann auch im Dauerbetrieb und gehen nie in den Deepsleep.

Pascal

5 Monaten zuvor
Punktzahl 0++
Wenn ich eine Battery mit 5V hab muss ich sie ja an GND und 5V anlegen um den Wemos mit strom zu versorgen um dann die spannung lesen zu können leg ich dann einfach A0 auf 5 V oder?

Green

3 Monaten zuvor
Punktzahl 0++
NEIN! Der A0 ist nicht 5V tolerant! Immer nur die 3,3V mit A0 verbinden. Die 5V werden von Board in die 3,3V gewandelt und Spannung liegt an den Pin an.
Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen. Bei einem Kommentar wird deine IP-Adresse zusammen mit dem Text, den angegebenen Namen bzw. der Email-Adresse in der Datenbank für die Kommentare dauerhaft gespeichert. Genaueres kannst du hier nachlesen: Datenschutzerklärung