D1 Mini mit Solarpannel
Nicht immer hat man einen Stormanschluss in der Nähe, um den D1 Mini zu versorgen. Da wäre es doch schön, wenn man ihn über eine Batterie mit einem angeschlossenen Solarpanel versorgen könnte. Es geht. Das wird aber je nach Solarpanel und Batterie schwierig für den Dauerbetrieb.
Hier erfahren Sie, wie ein D1 Mini mit einer 650mAh Batterie und einem 5 Watt Solarpanel zum Beispiel für die Aufzeichnung von Temperaturdaten verwendet werden kann. Das Zauberwort heißt deepsleep. Da es ja reicht, dass die Daten zum Beispiel alle 15 Minuten übermittelt werden, kann der D1 für die Zwischenzeit in den deepsleep geschickt werden. Dabei braucht er dann so wenig Strom, dass die oben beschriebene Batterie absolut ausreicht. In dieser Zeit kann der D1 aber nicht von andern Rechnern angesprochen werden, da er sich in der Schlafphase befindet. Dabei wird auch das WLAN abgeschaltet.
Da die Daten in so einem Fall nicht vom D1 abgerufen werden können, muss er sie aktiv an einen anderen Rechner senden. Dafür benutze ich in diesem Beispiel mqtt, das die Daten zum Beispiel an einen ioBroker sendet.
Wemos D1 Mini Komponenten
- D1 Mini (ca. 3,oo €)
- Micro Laderegler TP4056 (ca. 1,5o €)
- Batterie (ca. 3,oo €)
- Solarpanel (ca. 3,oo €)
- Adruino IDE zum flashen des D1
Bei dem Laderegler scheint es verschiedene Ausführungen zu geben. Welche, die bei der Ausgangsseite nur zwei Anschlüsse für die Batterie haben, und welche, die vier Anschlüsse für die Batterie und ein Zusatzgerät haben. Hier nutze ich den Laderegler mit 4 Anschlüssen.
Aufbau
D1 mit Batterie und Solarpanel Arduino IDE
Um Programme auf den D1 Mini zu spielen, muss man eine IDE benutzen. Dabei ist die Arduino IDE weit verbreitet. Hier ist ein sehr gutes Video, wie die IDE installiert und mit dem D1 Mini verbunden wird.
Adruino IDE Software
#include <ESP8266WiFi.h> #include <PubSubClient.h> const char* SSID = "WLAN_SSID"; const char* PSK = "WLAN_Passwort"; const char* mqttServer = "IP des MQQT Servers"; const int mqttPort = Port des MQTT Servers; const char* mqttUser = "MQTT_USER"; const char* mqttPassword = "MQTT_PASSWORT"; WiFiClient espClient; PubSubClient client(espClient); void setup() { // put your setup code here, to run once: Serial.begin (9600); Serial.println("Setup"); setup_wifi(); setup_mqtt(); //Deepsleep für 15 Minuten ESP.deepSleep(900000000); } void setup_wifi() { WiFi.begin(SSID, PSK); while (WiFi.status() != WL_CONNECTED) { delay(100); } Serial.println(WiFi.localIP()); } void setup_mqtt(){ client.setServer(mqttServer, mqttPort); while (!client.connected()) { Serial.println("Connecting to MQTT..."); if (client.connect("ESP8266Client", mqttUser, mqttPassword )) { Serial.println("connected"); } else { Serial.print("failed with state "); Serial.print(client.state()); delay(2000); } } client.publish("esp/test", "Ich bin kurz aufgewacht."); } void loop() { } ...