Estoy usando un ESP32 en un dispositivo alimentado por batería. El ESP pasa la mayor parte del tiempo en el sueño profundo para ahorrar energía. El dispositivo también tiene algunos sensores alimentados con 5 V, que estoy alimentando desde un convertidor elevador MCP1640, que se enciende durante la parte activa breve, y se apaga a través de su pin "ENABLE" durante el sueño profundo. La parte relevante del esquema es:
Por lo tanto, necesito mantener el pin # 4 alto durante el sueño. Debido a las pruebas descuidadas de esta parte, no sabía que el ESP32 apaga sus GPIO durante el sueño profundo , así que el pin # 4 no se mantiene alto, y los sensores permanecen activos. Esto agota la batería a un ritmo mucho más rápido de lo esperado.
Me pregunto si es posible solucionar este error mediante un parche de software (por supuesto, es fácil agregar una resistencia de pull-up externa al pin 4), pero tengo algunos dispositivos en el campo, lo cual ¡Odio tener que viajar unos cientos de kilómetros solo para soldar una resistencia! Y las personas de alrededor no tienen la tecnología para hacer esto por sí mismas; por el contrario, el parcheo de software remoto es fácil y está bien probado).
Por ejemplo, probé las resistencias pull-up del RTC:
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); // set the pin as pull-up
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH,
ESP_PD_OPTION_ON); // keep the RTC IO domain powered
Ejecutar esto justo antes de entrar en el sueño profundo casi funcionó, pero resulta que el débil pull-up es demasiado débil : probablemente ~ 38k si es una resistencia, o 90µA si es una fuente actual. Esto es insuficiente para impulsar el pin del ULN2003. También probé RTC_GPIO_MODE_OUTPUT_ONLY + rtc_gpio_set_level () también, pero esto no parece aumentar la capacidad de la unidad. Otra posibilidad es el sueño ligero, que evitaría ya que estaba defectuoso hace un tiempo y no quiero bloquear mis dispositivos.
Entonces, mi pregunta realmente es: ¿he agotado todas las opciones de software (ya que las de hardware también requieren quemar una gran cantidad de gasolina)?