ESP32

※This article is based on esp-idf 4.2.1

概要 [edit]

ESP32做低功耗不是一个好的选择

 https://www.icxbk.com/ask/detail/20819.html
 https://diyprojects.io/esp32-arduino-code-for-deep-sleep-and-wake-ups-timer-touch-pad-gpio/#.YXFOamJByUk

5种功耗模式 [edit]

Active 模式、Modem-sleep 模式、Light-sleep 模式、Deep-sleep 模式、休眠模式.

除了Active模式外其他四种模式都属于低功耗模式,按照顺序越往后功耗越低,工作的模块越少。modem-sleep的电流消耗为30mA~3mA,Light-sleep的电流消耗为800uA,deep-sleep模式的电流消耗为6.5uA,休眠模式的电流消耗最低可以达到4.5uA,可以看到esp32在低功耗模式是非常强大的。

ESP32_powersave1.png

唤醒源 [edit]

唤醒源Light-SleepDeep-sleep休眠
EXT0YY-
EXT1YYY
GPIOYY-
RTC计时器YYY
SDIOY--
Wi-FiY--
UART0Y--
UART1Y--
TOUCHYY-
ULP协处理器YY-
BTY--

API

MethodModem-SleepLight-SleepDeep-SleepHibernate
Timeresp_sleep_enable_timer_wakeup()
Touchesp_sleep_enable_touchpad_wakeup()
Ext0 or Ext1esp_sleep_enable_ext0_wakeup()
esp_sleep_enable_ext1_wakeup()
GPIOesp_sleep_enable_gpio_wakeup()
UARTesp_sleep_enable_uart_wakeup()
ULPesp_sleep_enable_ulp_wakeup()

例程 [edit]

EXT0唤醒
void app_main()
{
	switch(esp_speep_get_wakeup_cause())
	{
		case ESP_SLEEP_WAKEUP_EXT0:
			printf("wake up.........\n");
		break;
		case ESP_SLEEP_WAKEUP_UNDEFINED:
		default:
			printf("not sleep...............\n");
		break;	
	}
	//第一个参数:RTCIO的编号
	//第二个参数:是高电平唤醒还是低电平唤醒
	esp_sleep_enable_ext0_wakeup(34,0);
	esp_deep_sleep_start();
}
EXT1唤醒
void app_main()
{
	switch(esp_speep_get_wakeup_cause())
	{
		case ESP_SLEEP_WAKEUP_EXT1:
			printf("wake up.........\n");
		break;
		case ESP_SLEEP_WAKEUP_UNDEFINED:
		default:
			printf("not sleep...............\n");
		break;	
	}
	uint64_t mask;
	mask = 1ull << 34;
	//第一个参数:mask位,如果引脚为34 则mask = 1ull<<34
	//第二个参数:是高电平唤醒还是低电平唤醒
	esp_sleep_enable_ext1_wakeup(mask,0);
	esp_deep_sleep_start();
}

コメント:



(画像の文字列を入力して下さい)

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS