Eigenes ESP8266 Board

Guten Tag Arduino Community,

vor einigen Tagen hatte ich ein Topic am laufen, bei dem es um ein Problem mit einem ESP-01s Board ging. Lange Rede kurzer Sinn, das Problem konnte leider nicht behoben werden und ich musste das Board zurücksenden.

Da ich das Thema ESP natürlich nicht aufgegeben habe, habe ich mir weiter Gedanken gemacht und noch einmal reflektiert was ich überhaupt vorhabe.

Ich möchte mit einem batteriebetriebenen ESP einen Sensor abfragen und die daraus erhalten Daten an eine beliebige Schnittstelle weitergeben (z.B. MQTT). Anschließend soll der ESP in den Deep-Sleep Modus gehen um Strom zu sparen und nach etwa 30 Minuten wieder aufwachen und die Abfrage erneut starten. Zudem soll der Ladezustand der Batterie abgefragt werden und bei einer fast leeren Batterie warnen das diese geladen bzw. ausgetauscht werden muss. Zusammengefasst sieht das so aus:

  • ESP startet
  • stellt Verbindung mit WLAN her
  • verbindet sich mit Schnittstelle
  • fragt Sensordaten ab
  • sendet Sensordaten an Schnittstelle
  • fragt Batteriestatus ab
  • wenn Batterie schwach Warnung über Schnittstelle
  • ESP geht für 30 Minuten in Deep-Sleep Modus
  • ESP wacht nach 30 Minuten auf und durchläuft Schleife wieder

Zudem soll das ganz Projekt sehr klein und schmal bleiben das in ein kleines Case zu bekommen ist.

Nach einigen Recherchen hab ich folgenden Dinge zusammengesucht, welche für die Umsetzung eines solchen Projekts von Nöten wären:

  • Natürlich ESP8266EX als Wifi-Chip
  • Spannungsversorgung über einen 3,7V LiIon Akku (18650)
  • Akku-Ladeboard mit Über- und Unterladeschutz auf Basis von TP4056 und DW01
  • AMS1117-3.3 als Spannungsregler von 3,7V auf 3,3V
  • CP2102 als USB to UART Chip für das programmieren des ESP über USB
  • W25Q32FVSSIG als 4MB Flash zum speichern der Programme und ermöglichen von OTA-Programmierung

Ich könnte nun folgenden Weg gehen. Ich kaufe einen ESP beispielsweise wieder einen ESP-01 oder auch ein NodeMCU Board und füge dieses mit dem Lademodul und dem Akku zusammen. Da ich gerne das Projekt so klein wie möglich halten möchte, und daher auf das zusammenfügen von mehreren Boards verzichten möchte, bin ich auf den Gedanken gekommen ein eigenes ESP-Board zu entwickeln was letztendlich alle Komponenten vereint.

Herausgekommen ist das:

Wie schon kurz angedeutet habe ich hauptsächlich die Bauteile des Lademodul Boards und eines ESP-01s Boards miteinander verbunden und einige Anpassungen gemacht wie z.B. einen Reset und Programm Switch hinzugefügt, die I2C Schnittstelle herausgeführt um bei Bedarf ein LCD Display anzusteuern (auch wenn das natürlich erheblich die Akkulaufzeit beeinträchtigt) und 5 GPIOS zum ansteuern.

Meine Hauptquellen waren die oben verlinkten Datenblätter sowie folgende Verweise:
ESP-01s Datenblatt
http://www.liot.io/hardware/planning/
Batterie Lademodul

Zum Erstellen der Schemen habe ich EasyEDA genutzt.

Soweit habe ich mit meiner Konstruktion schon ein gutes Gefühl. Ich würde mich aber über Feedback sowie Verbesserungsvorschläge oder Fehlerausmerzungen freuen.

Vor allem brauch ich noch einen heißen Tipp wie ich den Ladezustand des Akkus abfragen kann.

Unsicher bin ich mir auch noch bei der Schaltung des CP2102 und dem damit verbunden Rest und Programmswitch. Hier würde ich mich auch über ein Feedback freuen.

Vielen Dank für eure Unterstützung

Leider sind die Schaltbilder nicht zu erkennen.
Ist das so gewollt ?

Also ich kann die Bilder sehen. Werden nur sehr klein vom Forum angezeigt. Entweder im Browser zoomen oder Bild herunterladen bzw. Bildadresse mit Rechtsklick kopieren und in separaten Tap anzeigen lassen.

Vor allem brauch ich noch einen heißen Tipp wie ich den Ladezustand des Akkus abfragen kann.

-->Dieser Punkt ist leider recht schwer.... 1) hat die Entladekurve von einem LiPo/ LiIon keine gute mathematische Grundlage und 2) ändert sich diese Kurve mit dem Alterungsprozess.
Für ein kleines Projekt habe ich dafür Folgendes gemacht:

  1. Entladekurve aufgenommen
  2. 4,2V= obere Grenze =100%
  3. 3,7V= untere Grenze (kurz darauf erfolgt der stark abfallende Part, der dem Akku zuliebe nicht erreicht werden sollte) = 0%
  4. für den Bereich dazwischen habe ich eine möglichst ähnliche (quadratische) Funktion ermittelt. Der Controller misst also die Spannung am Akku und berechnet anhand der ermittelten Funktion den entsprechenden Ladezustand.

Schau mal hier

Gruß eMeS

Der AMS1117 ist eine sehr schlechte Wahl für Dein Vorhaben. Besser wäre zum Beispiel ein SPX3819. Aber es gibt sicherlich noch viel sparsamere LDO.

@eMeS: Ein sehr interessantes Projekt, dass Du dort verlinkt hast. Ein Problem ist allerdings die zu geringe Distanz zwischen ESP und Sensor. Der ESP beeinflusst die Messergebnisse des Sensors reproduzierbar. Wenn ich das richtig in Erinnerung habe, stieg die Temperatur um so stärker, je näher sich der Sensor am ESP befand. Besser wäre es, den Sensor auf die andere Stirnseite des Gehäuses zu setzen.

Hallo Gelegenheitsbastler,
danke für den Tip. Ich hatte das Projekt bisher lediglich versuchsweise auf dem Bastelbrett aufgebaut. Werde Deine Erfahrungen bei der endgültigen Umsetzung berücksichtigen.
Gruß eMeS.

Gelegenheitsbastler:
Der AMS1117 ist eine sehr schlechte Wahl für Dein Vorhaben. Besser wäre zum Beispiel ein SPX3819. Aber es gibt sicherlich noch viel sparsamere LDO.

Second that. An Deinen LDO hast Du im wesentlichen drei Anforderungen

  1. Kann den benötigten Strom liefern. Check.
  2. Saugt Dir den Akku nicht im Leerlauf aus (quiescent current) - NICHT check (5-11 mA), der saugt einen 18650 LiPo alleine in 15 Tagen aus.
  3. Geringe dropout voltage, damit die Spannung nicht zu sehr reduziert wird und der Akku am unteren ende der Entladekurve länger nutzbar ist. - NICHT check (1.1V), der erreicht die 3.3V nichtmal, wenn der Akku randvoll ist.

Der SPX3819 erfüllt die 3 Punkte. Wenn Dein Sensorstrom gering ist, geht auch ein HT7333, der ist noch einen ticken besser vor allem in Punkt 3 und etwas kleiner. Ist strommäßig knapp bemessen, ich kann aber aus eigener Erfahrung sagen, dass der für Dein Vorhaben funktioniert und er ist im Rahmen der Datasheetangaben. Zur Sicherheit spendier ihm einen dicken Tantal-Cap, 220µF oder sowas.

Ich habe so einen Sensor, der einmal pro Stunde Temperatur, Luftfeuchtigkeit, Luftdruck (BME280) und Batterie (gemessen über einen 100/330kOhm Spannungsteiler) an einen MQTT-Server sendet. Seit Ende April ist der von 4.2V auf 3.95V. Deutlich unter 3.6V wird der bei der minimalen Belastung aber nicht fallen. Du kannst Dich also so auf 2-6 Monate Laufzeit einstellen bei Deinem halbstündigen Rhytmus.
Derzeit ist sowas drin, in der nächsten Version würde ich aber überlegen, einfach einen geschützen 18650 zu nehmen und den extern zu laden.

Ich rate Dir dazu ab.
Du willst die Sendeleitung zwischen ESP-Modul und Antenne über Deine Selbstbauplatiene führen?
Vergiß es.
Grüße Uwe

Erstmal danke an ElCaron und Gelegenheitsbastler für die Empfehlung mit dem SPX3819. Das sind die Verbesserungsvorschläge nach denen ich gesucht habe :smiley:

uwefed:
Ich rate Dir dazu ab.
Du willst die Sendeleitung zwischen ESP-Modul und Antenne über Deine Selbstbauplatiene führen?
Vergiß es.
Grüße Uwe

Wieso stellt das ein Problem da? Hast du eine Alternative? Auf vielen der ESP Boards sind doch OnBoard PCB Antennen.

Die gängigen ESP-Module haben die Antenne doch alle integriert, oder einen Coax-Connector drauf. Sehe also das Problem auch nicht.
Wenn Du allerdings in die Verlegenheit kommst: Erstelle eine Leiterbahn mit 50Ohm Impedanz, z.B. mit diesem Rechner. (Achtung: für Anfänger kontraintuitiv hängt diese Impedanz nicht von der Länge ab, aber natürlich ist das System nicht ideal und deswegen sollte die Verbindung trotzdem kurz gehalten werden).

ElCaron:
Die gängigen ESP-Module haben die Antenne doch alle integriert, oder einen Coax-Connector drauf. Sehe also das Problem auch nicht.
Wenn Du allerdings in die Verlegenheit kommst: Erstelle eine Leiterbahn mit 50Ohm Impedanz, z.B. mit diesem Rechner. (Achtung: für Anfänger kontraintuitiv hängt diese Impedanz nicht von der Länge ab, aber natürlich ist das System nicht ideal und deswegen sollte die Verbindung trotzdem kurz gehalten werden).

Also bestimme ich mit diesem Tool wie die OnBoard Antenne auszusehen hat? Trage die Werte ein, sprich wie breit sind die Tracks, wie weit sind diese voneinander entfernt welche dicke haben diese und wie dick ist die Leiterplatine selber. Am ende der Kalkulation müssen 50Ohm Impedanz herauskommen. Stimmt das soweit?

Kann ich mich nicht einfach an die Maße der ESP-01 Antenne halten? Sprich ganz simpel diese auf dem Board vermessen und selber auf PCB bringen?

cronos1:
Also bestimme ich mit diesem Tool wie die OnBoard Antenne auszusehen hat? Trage die Werte ein, sprich wie breit sind die Tracks, wie weit sind diese voneinander entfernt welche dicke haben diese und wie dick ist die Leiterplatine selber. Am ende der Kalkulation müssen 50Ohm Impedanz herauskommen. Stimmt das soweit?

Kann ich mich nicht einfach an die Maße der ESP-01 Antenne halten? Sprich ganz simpel diese auf dem Board vermessen und selber auf PCB bringen?

Nein, mit dem Tool berechnest Du quasi ein Koaxialkabel in Platinenform, um das Signal verlustarm zur Antenne zu bringen. PCB-Antennendesign geht über meinen Kopf. Da kann ich Dir nciht helfen. Welches Modul willst Du denn nehmen? Glaubst Du wirklich, damit wirst Du kleiner als ein ESP-07 auf dem board mit Keramikantenne auf dem Modul??

ElCaron:
Nein, mit dem Tool berechnest Du quasi ein Koaxialkabel in Platinenform, um das Signal verlustarm zur Antenne zu bringen.

Ich verstehe.

ElCaron:
PCB-Antennendesign geht über meinen Kopf. Da kann ich Dir nciht helfen. Welches Modul willst Du denn nehmen? Glaubst Du wirklich, damit wirst Du kleiner als ein ESP-07 auf dem board mit Keramikantenne auf dem Modul??

Wahrscheinlich werde ich nicht kleiner als ein ESP-07. Denke selber schon von Beginn an des Projekts daran einfach ein ESP-12 mit fertiger OnBoard Antenne zunehmen.

cronos1:
Wieso stellt das ein Problem da? Hast du eine Alternative? Auf vielen der ESP Boards sind doch OnBoard PCB Antennen.

Du hast auf dem Schaltplan eine externe Antenne gezeichnet.
Grüße Uwe

uwefed:
Du hast auf dem Schaltplan eine externe Antenne gezeichnet.
Grüße Uwe

Tut mir leid. Hast du vollkommen Recht. War noch aus der ersten Version als ich das Schaltbild aus dem Beispiel des ESP8266 Datenblattes übernommen habe.

Werde das Projekt jetzt auf ein ESP-12e umstellen. Vorteil hier ganz klar ich muss mir keine Gedanken über die Antenne machen. Klar werde ich damit größer als ein standalone ESP aber die Durchführung des Projektes wird um einiges einfacher.

cronos1:
Klar werde ich damit größer als ein standalone ESP aber die Durchführung des Projektes wird um einiges einfacher.

Wieso, die Antenne brächtest Du doch so oder so. ich sehe da keinen Größengewinn. Außérdem gibts ja noch die Modelle mit Keramikantenne.

So! Habe jetzt den standalone ESP durch ein ESP12e Modul ersetzt. Die folgende Schaltung ist dadurch erheblich dünner geworden. Das ESP12e Modul hat ein integrierten 4MB SPI Flash sodass ich diesen nicht zusätzlich verbauen muss.

Zudem habe ich die Seite der Stromversorgung angepasst. Der Spannungswandler für das Wandeln von 3,7V auf 3,3V ist nun ein MCP1700-3302E. Gefunden habe ich diesen über dieses Tutorial.

Die Schaltung sieht nun wie folgt aus. Würde mich wieder über Feedback freuen. Vielleicht findet jemand einen Fehler. Würde gerne die Schaltung auf PCB herstellen lassen, wäre doof wenn die Platine dann einen Fehler hat.


Danke für eure Unterstützung

Hallo,

zum Thema Festspannungsregler und ESP8266 kann ich dir sagen, dass der ESP vorallem beim initialisieren vom Wifi zwar kurze, aber dafür große (bis ca. 800mA) Stromimpulse erzeugt. Die bekommst du bei deinem Ldo und den 10µF sekundärseitig nicht abgefangen. Besser 1000µF benutzen, das kannst du aber leicht mit einem Testaufbau und wenn vorhanden Oszi selbst feststellen.
Ich habe mit einem HT7333, der ungefähr die gleichen technischen spezifikationen hat und 1000µF sekundär zum stützen, sehr gute Erfahrungen gemacht, bei Batteribetrieb mit einer LiPo Zelle

Super, danke für den Hinweis. Das werde ich noch berücksichtigen und dann werde ich die Platine wohl herstellen lassen. Da diese von Übersee kommt wird es einige Zeit dauern bis Sie da ist.