D1 Mini mit Solarpannel

  • von

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.

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
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() {
}

Dieser Sketch muss auf den D1 aufgespielt werden. Danach verbindet er sich mit dem MQTT Server mit der Nachricht „Ich bin kurz aufgewacht.“ und geht für 15 Minuten in den Tiefschlaf. Nun fährt er alle 15 Minuten wieder hoch und gibt die Nachricht erneut aus. Achten Sie darauf, dass die loop Funktion leer bleibt, da sie nie ausgeführt wird. Der D1 startet jedesmal von neuem und geht wieder in den Tiefschlaf. Natürlich kann man jetzt auch noch einen Sensor anschließen, der seinen Wert alle 15 Minuten meldet.

Schlagwörter: