我在电池供电的设备中使用 ESP32。ESP 大部分时间都处于深度睡眠状态以节省电量。该设备还有一些 5V 供电的传感器,我从 MCP1640 升压转换器馈电,该转换器在短暂的活动部分期间打开,并在深度睡眠期间通过其“启用”引脚关闭。原理图的相关部分是:
所以,我需要在睡眠期间将第 4 针保持高电平。由于这部分测试马虎,我不知道ESP32在深度睡眠期间关闭了它的GPIO,所以pin #4没有保持高电平,传感器保持活跃。这会以比预期快得多的速度耗尽电池。
我想知道是否可以通过软件补丁解决这个错误(当然,只需在引脚 4 上添加一个外部上拉电阻很容易 - 但我在现场有一些设备,我不想拥有行驶几百公里只是为了焊接一个电阻!而且周围的人自己并不精通技术;相反,远程软件修补很容易且经过良好测试)。
例如,我尝试了 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
在进入深度睡眠之前执行此操作几乎可以正常工作,但事实证明弱上拉太弱:如果是电阻,可能约为 38k,如果是电流源,则可能为 90µA。这不足以驱动 ULN2003 的引脚。我也尝试过 RTC_GPIO_MODE_OUTPUT_ONLY + rtc_gpio_set_level() ,但这似乎并没有增加驱动能力。另一种可能性是浅睡眠,我会避免这种情况,因为它前段时间有问题,我不想让我的设备变砖。
所以我的问题真的是:我是否用尽了所有软件选项(因为硬件选项也需要燃烧一罐汽油)?