This page was exported from Dillinger-Engineering [ http://dillinger-engineering.de ] Export date: Wed May 17 14:34:17 2017 / +0000 GMT Rugged Dash Button 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 APModus, 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 definirt werdn: SSID des lokalen WLAN Netzwerks Password des lokalen WLAN Netzwerks Hostname des Zielservers 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. Deep Sleep Modus Softwaretechnisch wird hierfür die sogenannte Deepsleep Funktion des Mikrocontrollers verwendet. In diesem Modus hat die Schaltung eine Stromaufnahme <10uA, was eine lange Lebensdauer der Batterien im Standby garantiert. Bei einem Standard ESP-07 befinden sich zwei LED's direkt auf dem Modul. Wobei eine LED direkt mit der Versorgungsspannung verbunden ist. Diese LED verursacht auch im deepsleep Modus einen schadhaften Ruhestrom von ca. 20mA und muss deshalb entfernt werden. Batterie Kapazität Die Richtwerte für 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 deep sleep Modus von mehreren Jahren entspricht. Das Layout bietet auch die Möglichkeit den Dash Button mit einer Knopfzelle zu betreieben. Hierfür muss eine Litium Ionen Zelle z.B. vom Typ LIR 2032 verwendet werden, da diese Typen auch bei einer Pulsbelastung in der für den ESP8266 definierten Spezifikation bleiben. Eine LR2032 verhält sich bei einer Pulsbelastung anders. Hier bricht die Spannung kurzfristig auf 2,8V ein, was deutlich auserhalb der Spezifizierten Parameter des ESP8266 liegen würde. So wird für dieses Projekt angenommen, dass zwei in Reihe geschaltete neue AA-Batterien zum Einsatz kommen. Diese liefern eine Spannung von 3,2 V, was einer Batteriekapazität von 100% entspäche. 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! Hierfür wird die folgende Berechnung angewandt: Bei einem Batteriebetrieb mit zwei AA-Zellen, wird am Kontroller maximal eine Betriebsspannung von 3,2V erreicht, was in diesem Fall einer prozentualen Batteriekapazität von 100 % entspräche. Die minimale Betriebsspannung von 3,0V legt somit die 0% der Batteriekapazität fest. Im folgenden Beispiel wird angenommen, dass die Batterie noch eine Spannung von 3,1V (50%) liefert: Y = Eingangsspannung 3,1V Y0= 3,0 V Y100= 3,2 V X= Ergebnis in % X0 = 0 % X100 = 100% X:= ((X100 - X0) * ( Y – Y0 ) / (Y100 – Y0)) + X0; 100 * 0.1 Y = ------------- + 0 = 50% 0.2 Die Software bietet die Möglichkeit, neben der Nutzinformation (Token) auch Informationen zur aktuellen Batteriekapazität des Dash Buttons zu liefern. Somit kann in der Serverapplikation ein Mechanismus angestoßen werden, der den Admin rechtzeitig informiert, wenn ein Batteriewechsel erforderlich wird. Das Layout bietet die Möglichkeit, verschieden Batteritypen in verschiedenen Leistungsklassen und Größen zu verwenden. In einem Praxistest wird ermittelt, welche Variante anschließend für die Serienfertigung am geeignetsten ist. Je nach verwendeter Batterietype ändern sich natürlich auch die Abmessung des zu verwendenden Gehäuses. 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 Antennenanschluß verwendet, muss die Verbindung zur internen (aufgelöteten) Antenne unterbrochen werden. Hierfür ist der Null Ohm Wiederstand neben dem Antennenanschluß zu entfernen. 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. Durch eine entsprechende Programmierung der Firmware, bestünde die Möglichkeit zukünftige Software Updates auch direkt per WLAN aus der Entwicklungsumgebung in den Mikrocontroller zu laden. Eine zweite Möglichkeit wäre ein automatisches Update, welches immer dann geladen würde, wenn eine neuere Version der Firmware auf einem Server vorliegt. Da der hier beschriebene Dash Button aber in einer Produktivumgebung eingesetzt werden soll, wird von dieser beiden Variante jedoch Abstand genommen. 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 bedrahtete 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. Um Fehlbedienungen zu verhindern wäre es sicherlich sinnvoll, den Tastendruck zeitlich zu überwachen, so das eine Aktion erst dann erfolgt, wenn der Taster z.B. für drei Sekunden gedrückt gehalten wurde. 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 180 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 Microkontroller wider in den deepsleep Modus. Weitere Ideen: Es wäre sicherlich sinnvoll, wenn man durch ein langes drücken des Tasters (ca. 10 Sekunden) den Konfigurationsmodus des Dash Buttons manuell aufrufen könnte bzw. die alte im Controller gespeicherte Verbindungsdaten gelöscht würden, um diese bei Bedarf neu zu definieren. 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. Die Batterie Kapazität sollte als weitere Parameter im HTTP PUT an den Server übermittelt werden. 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. In diesem Fall wäre ein ein weitere Parameter nötig. Der Parameter "token" beschriebe somit die Identifikationsnummer des Dash Buttons, der Parameter "batt" die aktuelle Kapazität der eingebauten Batterie und der Parameter "aktion" welche aktion der Dash Button ausführen soll. Hierbei wäre zu bedenken, dass ein zyklisches Verbinden mit dem lokalen WLAN und das Senden der Statusinformation die Batterielebensdauer zusätzlich verkürzen würde. HTTP PUT: http://HOST/URL?&token=ef98c8246ef0409da5fb3a27afa4ec61&batt=92&action=order Zusätzlich sollte dem Benutzer des Dash Buttons über ein charakteristische Blinken der Status LED ein bevorstehender Batteriewechsel angezeigt werden. (z.B. mehrmaliges kurzes aufblitzen der LED, bevor der Controller wieder in den deepsleep Modus wechselt.) Post date: 2017-04-24 12:55:57 Post date GMT: 2017-04-24 11:55:57 Post modified date: 2017-05-02 10:14:20 Post modified date GMT: 2017-05-02 09:14:20 Powered by [ Universal Post Manager ] plugin. MS Word saving format developed by gVectors Team www.gVectors.com