Здравствуйте,
никак не найду пример, который бы помог вывести ESP32-C3 super mini из deep-sleep.
пример из ArduinoIDE не хочет
C:\usr\M\Arduino\ArduinoIDE_\portable\sketchbook\_TESTS\_ESP32tests\ESP32-C3 mini\DeepSleepAwakeGPIO0\DeepSleepAwakeGPIO0.ino: In function 'void setup()':
DeepSleepAwakeGPIO0:59:3: error: 'esp_sleep_enable_ext0_wakeup' was not declared in this scope; did you mean 'esp_sleep_enable_bt_wakeup'?
59 | esp_sleep_enable_ext0_wakeup(pin_Touch, 1); //1 = High, 0 = Low
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| esp_sleep_enable_bt_wakeup
exit status 1
'esp_sleep_enable_ext0_wakeup' was not declared in this scope; did you mean 'esp_sleep_enable_bt_wakeup'?
из документации на ESP32-C3
esp_err_tgpio_wakeup_enable(gpio_num_tgpio_num, gpio_int_type_tintr_type)
Enable GPIO wake-up function.
Return
ESP_OK Success
ESP_ERR_INVALID_ARG Parameter error
Parameters
gpio_num: GPIO number.
intr_type: GPIO wake-up type. Only GPIO_INTR_LOW_LEVEL or GPIO_INTR_HIGH_LEVEL can be used.
кнопка повешена на GPIO0, при нажатии на GPIO0 получаем HIGH
но после засыпания - не просыпается
вот setup()
// для отключения BT Wifi (see setup())
#include <esp_bt.h>
#include <esp_wifi.h>
#define pin_LED 8
#define pin_IR 1
#define pin_Touch 0
#define pin_WAKEUP GPIO_NUM_0
#define pin_Mosfet 10
#include "driver/rtc_io.h"
// the setup function runs once when you press reset or power the board
void setup()
{
Serial.begin(115200);
delay(100);
Serial.println(__FILE__);
Serial.println(__DATE__);
//Serial.print("Welcome for BLINK at ESP32-C3 mini\n");
delay(100); // initialize digital pin LED_BUILTIN as an output.
// pinMode(LED_BUILTIN, OUTPUT);
// turn off BT & WiFi
esp_wifi_stop();
esp_wifi_deinit();
esp_bt_controller_disable();
pinMode(pin_LED,OUTPUT);
digitalWrite(pin_LED,HIGH); // turn off
pinMode(pin_IR,INPUT);
pinMode(pin_Touch,INPUT);
pinMode(pin_Mosfet,OUTPUT);
Serial.print("pin_Touch="); Serial.println(pin_Touch);
Serial.print("pin_WAKEUP="); Serial.println(pin_WAKEUP);
// разрешение пробуждения от GPIO (pin_Touch -> HIGH)
/**/
// pin_WAKEUP - тоже самое что и pin_Touch
if (ESP_OK!=gpio_wakeup_enable(pin_WAKEUP, GPIO_INTR_HIGH_LEVEL)) // HIGH or LOW
{
Serial.println("Error define gpio wakeup");
delay(5000);
}
Serial.println("after gpio_wakeup_enable()");
delay(1000);
esp_sleep_enable_gpio_wakeup();
/**/
// esp_sleep_enable_ext0_wakeup(pin_Touch, 1); //1 = High, 0 = Low
// уход в сон
// esp_deep_sleep_start();
}
ошибок выполнения gpio_wakeup_enable - нет.
если я правильно понимаю, то при появлении HIGH на GPIO0 еспшка должна перезагрузиться? Но ничего не происходит… просто спит.
Помогите пжлста.