Moteino defekt? Nein!

Im Rahmen unserer Hausautomatisierung mit openhab verwende ich einige Moteinos, besonders Strom sparende Arduino-Clones aus den USA, die auf Wunsch gleich mit Funkmodulen und zuätzlichem Flash-Speicher ausgerüstet sind.

Wir haben zwei Moteinos im/am Haus, die mit handelsüblichen 9V-Batterien betrieben werden. Anfangs klappte dies sehr gut und sie funktionierten monatelang. Doch zunehmend verkürzte sich die Lebensdauer der Batterien - ein eher unerwartetes Verhalten bei unverändertem Einsatz. Die kürzere Laufzeit zeigte sich bei beiden Moteinos zunehmend zuerst nach einem halben bis einem Jahr und endete darin, dass eine Batterie nicht monatelang, sondern zum Schluss nur noch eine Woche hielt!

Ich befürchtete, ich hätte sie in irgendeiner Form “kaputtgespielt”, möglicherweise an einer verborgenen Stelle falsch verdrahtet, denn ihren Zweck erfüllten sie nach wie vor einwandfrei. Bevor ich mir einfach nur neue Hardware bestellte, sah ich sie mir genauer an und recherchierte noch einmal im Netz.

Es stellte sich heraus, dass der Flash-Speicher die Ursache war, obwohl (oder wahrscheinlich weil) ich ihn gar nicht verwendete.

Ich hatte die Library für den Flash-Speicher zwar importiert…

#include <SPIFlash.h>   // http://github.com/lowpowerlab/spiflash

…jedoch anschliessend nicht oder nicht vollständig weiter verwendet.

Wichtig ist, den Speicher dann auch zu initialisieren

//////////////////////////////////////////////////////////////////////////
// flash(SPI_CS, MANUFACTURER_ID)
// SPI_CS       - CS pin attached to SPI flash chip (8 in case of Moteino)
// MANUFACTURER_ID - OPTIONAL, 0x1F44 for adesto(ex atmel) 4mbit flash
//                             0xEF30 for windbond 4mbit flash
//                             0xEF40 for windbond 16/64mbit flash
//////////////////////////////////////////////////////////////////////////
// Moteino: Flash SPI_CS = 8, ID = 0xEF30 (Winbond 4Mbit flash)
SPIFlash flash(8, 0xEF30); // flash(SPI_CS, MANUFACTURER_ID)

und vor allem, schlafen zu legen!

 if (flash.initialize()) {
   Serial.println("Flash Init OK!");
   flash.sleep();          // put flash (if it exists) into low power mode
} else {
   Serial.println("Flash Init FAIL!");
}

Das flash.sleep-Kommando sorgt nun bei beiden Moteinos dafür, dass sie wieder deutlich weniger Strom verbrauchen. Dies ist auch nach ca. einem Monat sehr schön in den Batterie-Diagrammen zu sehen:

Chart1

Chart2
Die Y-Achse bezeichnet bei beiden Diagrammen die verbleibende Spannung.

Kurze Erklärung der Diagramme:
An Moteino 1 waren die Batterien von mal zu Mal schneller leer. (Und es lag nicht an einer schwankenden Qualtät der Batterien.)
Die Batterie des Moteino 2 hielt am Ende nur noch etwa eine Woche.
Ich hatte dann im August keine Batterien nachgelegt und mich um den Monatswechsel August/September dieses Themas angekommen. Seither ist der Verlauf so, wie ich ihn eingentlich erwartete und wie er zu Beginn war. Moteino 1 hält länger als Moteino 2, weil er meistens nur schläft.

Es scheint also, als hätte der Flash-Speicher dafür gesorgt, dass die Moteinos zunehmend mehr Strom verbraucht haben. Mir ist allerdings noch nicht klar, warum dies passiert ist.

Johanna, Oktober 2016