Schlagwort-Archive: ESP-07

Dash Button Bestellsystem

Dashbutton Server Software
Dashbutton Server Software

Was ist ein Dash Button?

In diesem Projekt entsteht eine Batterie betriebener WLAN Dash Button in robuster Ausf√ľhrung.
Die Elektronik soll in einem Geh√§use aus Metall untergebracht werden und eine Schutzart von IP64 erf√ľllen (Schutz gegen Spritzwasser und Staub).

Ein Dash Button ist eine kleine Mikrocontroller gest√ľtzte Schaltung, die bei Anforderung mit einem lokalen WLAN Netzwerk eine Verbindung herstellen kann, um so Daten an einen beliebigen Server zu senden.

Um einen Dash Button in ein bestehendes WLAN Netzwerk zu integrieren, startet der Dash Button im AP-Modus, nach dem Verbinden z.B. mit einem Smartphone oder Laptop, wird automatisch ein Captive Portal auf dem Endgerät geöffnet.

Hier können anschließend folgende Credentials definiert werden:

  • SSID des lokalen WLAN Netzwerks
  • Passwort des lokalen WLAN Netzwerks
  • Hostname des Ziel-Servers
  • URL
  • Dash Token, ein ein-eindeutiger Schl√ľssel f√ľr die Aktion die der Dash Button ausl√∂sen soll

Aufbau der Hardware

Der Dash Button soll unabhängig von einer externen Energieversorgung arbeiten können. Das bedeutet, dass die Energieversorgung mit Batterien realisiert wird, die im Gehäuse untergebracht werden.

Prototyp Dash Button von oben
Prototyp Dash Button von unten
Prototyp eines DashButtons im Metallgehäuse, zum Testen der Feldstärke mit einer ext. Antenne.

Deep Sleep Modus

Softwaretechnisch wird hierf√ľr die sogenannte Deepsleep Funktion des Mikrocontrollers verwendet. In diesem Modus hat die Schaltung eine Stromaufnahme <70uA, was eine lange Lebensdauer der Batterien im Standby garantiert.

Nach Herstellerangaben, liegt der Deepsleep Ruhestrom bei ca. 10uA. Gemessen wurde beim Dashbutton jedoch eine Ruhestromaufnahme von ca. 60 uA. Dies muss jedoch noch genauer untersucht werden, da hier eine Messfehlertoleranz des Multimeters anzunehmen ist.

Parameter Typische Stromaufnahme Einheit
Tx 802.11b, CCK 11Mbps, Pout=+17dBm 170 mA
Tx 802.11g, OFDM 54Mbps,, Pout=+15dBm 140 mA
Tx 802.11n, MCS7, Pout=+13dBm 120 mA
Rx 802.11b 1024 byte packet lenght, -80dBm 50 mA
Rx 802.11g 1024 byte packet lenght, -70dBm 56 mA
Rx 802.11n 1024 byte packet lenght, -65dBm 56 mA
Modem-Sleep 15 mA
Light-Sleep 0,5 mA
Power save mode DTIM 1 1,2 mA
Power save mode DTIM 3 0,9 mA
Deep-Sleep 10 uA
Power OFF 0.5 uA

Eine Standard ESP-07 enth√§lt einen Flash RAM von 1M, f√ľr die Programmierung wird ein SPIFFS von 64 K voreingestellt.
Direkt auf dem Modul befinden sich zwei LED’s , die rote LED ist direkt mit der Versorgungsspannung verbunden. Diese LED verursacht auch im Deepsleep Modus einen schadhaften Ruhestrom von ca. 15 mA und muss deshalb entfernt werden.
Die blaue LED ist mit TxD verbunden und zeigt die Aktivität an diesem Pin an.

√Ąnderung des Energieversorgungsskonzeptes

Bei den Tests mit verschiedenen Prim√§rquellen hat sich gezeigt, das mit dem ersten Layoutentwurf immer nur ein relativ kleiner Teil der zu Verf√ľgungstehenden Kapazit√§ten entnommen werden kann. Deshalb wird nun in einer √ľberarabeitenen Hardware Revision ein StepUp Booster vom Typ¬†¬† NCP1402SN33T1 eingesetzt.

Dieser Baustein hat eine sehr niedrige Anlaufspannung von ca. 0.8V. Werden zwei AA-Battereien in Reihe betrieben, kann jede Zelle bis zu einer Spannung von 0.4V entladen werden, was knapp 90% der Gesamtkapazität der Zellen entspricht.

Der Baustein hat einen sehr niedrige Standby Stromaufnahme von nur 10uA und er stellt am Ausgang einen konstante Spannung von 3.3V zur Verf√ľgung.

Das Schaltungsdesigne wird auch dahingehend ge√§ndert, dass auf den Standbystrom des NCP1402SN33T1 und den Deep Sleep Modus des ESP6288 verzichtet werden kann, da die Summe der beiden Ruhestromaufnahmen dann doch einen betr√§chtlichen Anteil von ca. 70 uA aus mahen w√ľrden.

Zu Einsatz kommt ein Mos Fet Transistor, der gleich zwei Aufgaben erf√ľllt. Zum einen dient er dem Verpolungsschutz, wenn die Batteriene versehentlich falsch eingelegt wurden und sch√ľtzt so die Schaltkreise vor der Zerst√∂rung.
Und zum anderen, wird er als Schalter f√ľr die Sapannungsversorgung verwendet.

Mit dem Bet√§tigen des Tasters wird der Mos Fet leitend und stellt die Versorgungsspannung des Schaltkreises zur Verf√ľgung. Ms nach dem starten des ESP 8266 steuert dieser dann √ľbereinen Ausgang den Mos Fet an und verhindert so das sie Versorungsspannung nach dem loslassen des Taster wieder abgeschaltet wird.

Sobald alle n√∂tigen Programmaktionen abgearbeitet wurden, gibt der ESP 8266 den Schaltausgang des Mos Fet’s wieder frei und die Spannungsversorgung wird abgeschaltet.

Batterie Kapazität

Die Richtwerte f√ľr Alkalien Batterien schwanken lt. Herstellerangaben in folgenden Bereichen:

AAA 1000  - 1500  mAh
AA  2000  - 3000  mAh
D   12000 - 20000 mAh

Eine Duracell Plus soll lt. Herstellers Angaben bis zu 2.9 Ah haben, was einer Laufzeit im Deepsleep Modus von mehreren Jahren entspräche.

F√ľr Batterietests bietet das Layout unter anderem auch die M√∂glichkeit den Dash Button mit einer Knopfzelle zu betreiben.
Es hat sich jedoch gezeigt, dass eine Standard LR2032 nicht in Frage kommt, da bei diesem Typ bei einer Pulsbelastung die Spannung kurzfristig auf 2,8V einbricht. Was deutlich au√üerhalb der Spezifizierten Parameter des ESP8266 liegen w√ľrde.

Deshalb wurde f√ľr den Test eine Lithium Ionen Zelle z.B. Typ¬†LIR 2032 (35mAh) verwendet. Da diese Typen auch bei einer Pulsbelastung in der f√ľr den ESP8266 definierten Spezifikation bleibt.
Der Nachteil dieser kleinen Bauform liegt jedoch in der kurzen Standbyzeit,¬† die bei rund 60 uA Ruhestromaufnahme gerade mal f√ľr ca. 25 Tage reicht.

Bei der Verwendung von zwei in Reihe geschalteten AA-Zink Kohle Batterien ist der Arbeitsspannungsbereich f√ľr den Betrieb eines ESP8266 sehr eingeschr√§nkt. Bei neuen Batterien liegt die Spannung bei ca. 3,2 V. Nach einer Entladung von ca. 5% liegt die Spannung nur noch bei 3,0V. Somit erscheint der Einsatz solcher Batterietypen als wenig sinnvoll.

Eine weitere denkbare Option w√§re der Verwendung von drei in Reihe geschalteten AA-Zellen, um das Spannungsniveau¬† in einen besseren Auslastungsbereich zu bekommen. Hier bei m√ľsste dann jedoch wieder ein Spannungsregler eingesetzt werden, der zus√§tzliche Verluste mit sich bringt, was die Lebensdauer aber bei der verh√§ltnism√§√üig geringen Einschaltzeit kaum einschr√§nken d√ľrfte.

Typische Kennlienie einer Duracell AA Batterie. (Quelle Duracell Datenblatt)

So wird nun im dritten Anlauf f√ľr dieses Projekt angenommen, dass entweder zwei paralell geschaltete LiFEPO4 AA Akkus zum Einsatz kommen oder drei AA-Zellen die in Reihe geschaltet werden. Oder die Dritte Option ein LIPO Akku mit einer Ausgangsspannung von 3.7V.

Die Platine erh√§lt einen 3,3 V low drop Spannungsregler der Firma Mikrochip, vom Typ MIC5219-3.3BM5 LG33 3.3V ‚Äď40¬įC to +125¬įC SOT-23-5.

Dieser Baustein besitzt einen Enable Eingang, der es erlaubt die komplette Schaltung abzuschalten ohne das ein merklicher Ruhestrom fließt.

Durch den Einsatz dieses Reglers kann ein ein Eingangsspannungsbereiche zwischen 3 Р5v abgedeckt werden. Darurch sind alle drei Varianten der oben beschriebenen Spannungsversorgungen möglich.

LiFEPO4 AA Akkus liefern eine Spannung von 3,4 V / 700 mA, was einer Batteriekapazität von 100% entspräche.
Durch eine Parallelschaltung von zwei LiFePO4 Akkus kann somit die Kapazität auf 1400 mAh erhöht werden.

Hierbei l√§ge die Ausn√ľtzung der Batteriekapazit√§t bei etwa 60% (800 mAh), im Vergleich zu drei Zink-Kohle Batteriene. Deren Entladeschlussspannung bei 1v liegt, was bei drei in reihe geschaltenenen Zellen ca. 3V entspricht¬† = minimale Eingangsspannung der EPS lt. Spec.

Es ergäbe sich rein rechnerisch eine Standbybetriebszeit von ca. 1,5 Jahren.

Ein großer Vorteil bei der Verwendung von LiFePO4 Zellen liegt darin, dass die Zellen wiederaufladbar sind und somit viele Male wieder verwendet werden können.
Ein gravierender Nachteil der Parallelschaltung von zwei Zellen liegt jedoch in einer Verpolung.
Wenn die Zellen von nicht fachkundigem Personal gewechselt werden sollen,¬† kann es durch die Parallelschaltung der beiden Zellen bei einem falschen Einlegen zu einem Kurzschluss kommen, der dann zur thermischen Zerst√∂rung der Akkus und letztendlich des Dashbuttons f√ľhren w√ľrde.

Um eine lange Lebensdauer von Akkus zu gew√§hrleisten, sind diese unbedingt vor einer Tiefentladung¬† zu sch√ľtzen. Deshalb ist in der Firmware des DashButtons ein Schwellwert von 2,9 V programmiert, ab dem sich der Dash Button nicht mehr starten l√§sst. Die LED geht kurz an, blinkt f√ľr 1 Sekunde sehr schnell und geht dann sofort wieder aus!

Laut Herstellerangaben darf sich die Betriebsspannung eines ESP 8266 in einem Bereich von 3,0V – 3,6V bewegen (Typisch 3,3V).
Somit entspr√§che eine Batteriespannung von 3,0V gleich 0% Batteriekapazit√§t, was einen sofortigen Batteriewechsel n√∂tig machen w√ľrde!

Server Software

Die Server Software bietet die Möglichkeit, neben den Nutzinformation (Token) auch Informationen zur aktuellen Batteriespannung, Hard- und Software Version  und eine Statusinformation des DashButtons zu liefern.

Die Betriebsspannung wird mit dem Parameter &vbatt=x.xxx an den Server √ľbergeben.
Er gibt die Batteriespannung in Volt an.

Beispielberechnung f√ľr die Batteriekapazit√§t:

Bei Betrieb mit einer Li Fe PO4 Zelle , wird am Messeingang des Mikrocontrollers etwa eine  Betriebsspannung von 3,3V erreicht.
Was in diesem Fall einer prozentualen Batteriekapazität von 100 % entspräche.
Die minimale Betriebsspannung sollte 3,0V nicht unterschreiten, was somit die 0% der Batteriekapazität fest legt.

Im folgenden Beispiel wird angenommen, dass die Batterie noch eine Spannung von 3,15V (50%) liefert:

Y = Eingangsspannung 3,15V
Y0= 3,0 V
Y100= 3,3 V

X= Ergebnis in %
X0 = 0 %
X100 = 100%

X:= ((X100 – X0) * ( Y ‚Äď Y0 )¬† / ¬†(Y100 ‚Äď Y0)) + X0;

        100 * 0.1
Y = ————-¬† + 0 = 50%
               0.2

Wird der Parameter nicht √ľbergeben, wird der Wert im Server automatisch auf -1 gesetzt. Was soviel bedeutet, dass der Batteriestatus nicht ermittelt werden konnte bzw. nicht bekannt ist.

In der Server Software kann f√ľr jeden DashButton der verwendete Batterietyp ausgew√§hlt werden. Somit kann die Berechnung der Batteriekapazit√§t anhand einer hinterlegten Herstellerkennlinie erfolgen, was eine genauere Anzeige der tats√§chlichen Kapazit√§t erm√∂glicht.

Mit diesen Informationen kann in der Serverapplikation ein Mechanismus angesto√üen werden, der den Admin rechtzeitig dar√ľber informiert, wann ein Batteriewechsel erforderlich wird.

Das Layout bietet die Möglichkeit, verschieden Batterietypen in verschiedenen Leistungsklassen und Größen zu verwenden.

Externe Antenne

Um eine stabile Funkverbindung etablieren zu können, muss bei der Verwendung eines Metall- bzw. metallisierten Gehäuses eine externe Antenne verwendet werden!

Bei einem Standard ESP-07 Modulen ist bereits ein Anschluss f√ľr eine externe Antenne vorhanden. Wird der externe Antennenanschluss verwendet, muss die Verbindung zur internen (aufgel√∂teten) Antenne unterbrochen werden. Hierf√ľr ist der Null Ohm Wiederstand neben dem Antennenanschluss zu entfernen.

F√ľr die Verwendung einer externen Antenne muss der null Ohm Wiederstand (rotes Quadrat) entfernt werden. Wird das ESP07 Modul mit einer Batterie betrieben muss zus√§tzlich die Power LED (roter Kreis) entfernt werden, um ein unn√∂tiges entladen der Batterie zu vermeiden.

 

Wurde die interne Antenne entfernt,ist zwingend darauf zu achten, dass das Modul nicht ohne eine angeschlossene externe Antenne betrieben wird. Da dies zur Zerst√∂rung des ESP-Moduls f√ľhren kann.

Programmierung

Die Programmierung des Mikrocontrollers erfolgt √ľber einen Programmieranschluss, der auf der Platine vorhanden ist.
Diese Schnittstelle ist notwendig, um erstmalig eine Firmware in den Mikrocontroller laden zu können.

Hierbei ist zu beachten, dass die L√∂tbr√ľcke J1 die im Bild mit einem Stern gekennzeichnet ist, nicht geschlossen sein darf. Da im Auslieferungsstand der Pin GPIO16 auf low liegt und somit eine Dauer Reset anliegen w√ľrde.

Im Programm darf somit der GPIO16 nicht mit pinMode() konfiguriert werden.

L√∂tbr√ľcke f√ľr ein optionales automatisches aktivieren des DashButton nach einer fest definierten Zeitspanne. Sie verbindet den Pin GPIO16 mit dem Eingang RESET.

Funktionsweise des Tasters und der LED

Das Layout bietet je nach Best√ľckung die M√∂glichkeit einen Taster und eine LED in SMD Technik oder aber auch¬†bedrahteten Bauelemente zu verwenden. Somit ist es auch m√∂glich andere Bedientasten z.B. mit Kabelanschl√ľssen ein zu l√∂ten.

Befindet sich das Modul im Deepsleep Modus, kann es durch einen Tastendruck aufgeweckt werden.

Je nachdem wie lange der Taster¬† gedr√ľckt gehalten wir, werden unterschiedliche Funktionen aufgerufen:

  • Dr√ľcken bis eine Verbindung ausgebaut wurde¬† – Test Modus (Status 0).
  • Dr√ľcken √ľber einen Zeitraum von 10 Sekunden – WIFI Setup (Status 1).
  • kurzes Dr√ľcken des Tasters – l√∂st eine Bestellung aus (Status 2).

Anschließend versucht das Gerät eine Netzwerkverbindung zum lokalen AP zu etablieren, was durch ein langsames blinken der LED signalisiert wird.
Kann keine Verbindung hergestellt werden, beginnt die LED schnell zu blinken und man hat die M√∂glichkeit f√ľr 240 Sekunden eine Verbindung zu diesem Dash Button aufzubauen und die Konfiguration vor zu nehmen.
Erfolgt in dieser Zeit kein Login auf dem Dash Button, wird der Mikrocontroller wieder in den Deepsleep Modus versetzt, um die Batterie nicht unnötig zu strapazieren.

Ist der Verbindungsaufbau zum lokalen WLAN gegl√ľckt, wird die Nutzinformation (Dash Token) an den in den Credentials definierten Server verschickt.
Wurde der Empfang der Information vom Server best√§tigt, leuchtet die Status LED f√ľr drei Sekunden kontinuierlich.
Wird der Empfangs nicht vom Server best√§tigt, wird dies durch schnelles Blinken der LED f√ľr drei Sekunden angezeigt.
Anschließend wechselt der Mikrocontroller wider in den Deepsleep Modus.

Je nachdem welches Ereignis am Dashbutton ausgel√∂st wurde, wird eine entsprechende Statusinformation im Parameter &status=x dem HTTP Put Request √ľbergeben. Wird der Parameter nicht mit √ľbergeben, wird der Wert im Server automatisch auf -1 gesetzt, was soviel bedeutet das der Status nicht bekannt ist.

Server Applikation f√ľr den DashButton

Die Serverapplikation kann auch direkt mit dem Webbrowser getestet werden. Hierf√ľr wird in die Adresszeile der folgende Aufruf eingegeben:

http://HOST
/URL?&token=ef98c8246ef0409da5fb3a27afa4ec61
&vbatt=3.12&hv=1.00&sv=1.03&status=1

  • Host:
    Ist die IP-Adresse des Servers z.B. 192.168.1.123
  • URL:
    Ist eine Pfadangabe (optional f√ľr den augenblicklichen Stand) soll sp√§ter der Einordnung der Eintr√§ge dienen, z.B. f√ľr die Standorte.
  • token:
    Ist ein 32 stelliger ein eindeutiger Schl√ľssel des betreffenden Dash Buttons.
  • vbatt:
    Gibt die Batteriespannung in Volt an.
  • hv:
    Gibt die aktuelle Hardware Revision des DashButton an.
  • sv:
    Gibt die aktuelle Firmware Version des DashButton an.
  • status:
    Information √ľber den Ausl√∂ser des Ereignisses.
    0 – Test (Button wurde k√ľrzer als drei Sekunden gedr√ľckt)
    1 – Settings (Die Einstellungen wurden aufgerufen, durch langes dr√ľcken des Tasters)
    2 – Order (Ein Bestellauftrag wurde abgesetzt)
    3 – F√ľr weitere Statusinformationen reserviert
Weitere Ideen:
  • Der Dash Token sollte im Prinzip ein 32 Byte Hashcode sein, der einen Pr√ľfsumme oder einen CRC Check enth√§lt, um die Authentizit√§t des Tokens auf dem Server verifizieren zu k√∂nnen.
  • Es w√§re denkbar, dass sich ein Dash Button der l√§ngere Zeit nicht bet√§tigt wurde, automatisch aktiviert (z.B. alle 24h) und seinen Batteriestatus an den Server sendet.
    Der Parameter „status“ w√ľrde das Ereignis dann als Test identifizieren.
    Hierbei w√§re zu bedenken, dass ein zyklisches Verbinden mit dem WLAN und das Senden dieser Statusinformationen die Batterielebensdauer zus√§tzlich verk√ľrzen w√ľrde.