Ich verwende einen ESP32 in einem batteriebetriebenen Gerät. Das ESP verbringt die meiste Zeit im Tiefschlaf, um Strom zu sparen. Das Gerät verfügt außerdem über einige 5-V-Sensoren, die ich von einem MCP1640-Aufwärtswandler speise, der während des kurzen aktiven Teils eingeschaltet ist und im Tiefschlaf über seinen "ENABLE" -Pin ausgeschaltet wird. Der relevante Teil des Schaltplans ist:
simulieren diese Schaltung - Schema erstellt mit CircuitLab sup>
Also muss ich Pin 4 im Schlaf hoch halten. Aufgrund schlampiger Tests dieses Teils wusste ich nicht, dass der ESP32 seine GPIOs im Tiefschlaf herunterfährt, sodass Pin 4 nicht hoch gehalten wird und die Sensoren aktiv bleiben. Dadurch wird der Akku viel schneller als erwartet entladen.
Ich frage mich, ob es möglich ist, diesen Fehler durch einen Software-Patch zu umgehen (natürlich ist es einfach, Pin 4 einfach einen externen Pull-up-Widerstand hinzuzufügen - aber ich habe ein paar Geräte auf dem Feld, die ich würde Ich hasse es, ein paar hundert Kilometer zurücklegen zu müssen, nur um einen Widerstand anzulöten! Und die Leute in der Umgebung sind nicht technisch versiert, dies selbst zu tun; im Gegenteil, das Patchen von Remote-Software ist einfach und gut getestet.
Zum Beispiel habe ich die Pull-up-Widerstände der RTC ausprobiert:
gpio_num_t pin = (gpio_num_t) PIN_DISABLE_5V;
rtc_gpio_set_direction (Pin, RTC_GPIO_MODE_INPUT_OUTUT);
rtc_gpio_pulldown_dis (Pin);
rtc_gpio_pullup_en (Pin); // Setze den Pin als Pull-Up
esp_sleep_pd_config (ESP_PD_DOMAIN_RTC_PERIPH,
ESP_PD_OPTION_ON); // die RTC-E / A-Domäne mit Strom versorgen
Dies kurz vor dem Eintritt in den Tiefschlaf auszuführen hat fast funktioniert, aber es stellt sich heraus, dass der schwache Pull-up zu schwach ist : wahrscheinlich ~ 38k, wenn es sich um einen Widerstand handelt, oder90µA wenn es sich um eine Stromquelle handelt.Dies reicht nicht aus, um den Pin des ULN2003 anzusteuern.Ich habe auch RTC_GPIO_MODE_OUTPUT_ONLY + rtc_gpio_set_level () ausprobiert, aber dies schien die Laufwerksfähigkeit nicht zu erhöhen.Eine andere Möglichkeit ist leichter Schlaf, den ich vermeiden würde, da er vor einiger Zeit fehlerhaft war und ich nicht möchte, dass meine Geräte zugemauert werden.
Meine Frage really lautet also: Habe ich alle Softwareoptionen ausgeschöpft (da für die Hardware auch ein Tank voll Benzin verbrannt werden muss)?