ESP32 - BLE не подключается/не перезапускается после легкого сна

новичок в arduino здесь.

Я пытаюсь подключиться через BLE после того, как ESP32 выходит из легкого сна. Я пробовал много разных вещей, но ни одна из них не работает. Все работает нормально, прежде чем устройство спит в первый раз. Не могли бы вы, ребята, дать несколько идей о том, что не так? официальные документы ужасны.

бтСтоп();
задержка(1000);
esp_sleep_enable_timer_wakeup (TIME_TO_SLEEP * uS_TO_S_FACTOR);
Serial.println("Сейчас иду спать");
esp_light_sleep_start();
бтСтарт();

, 👍1


1 ответ


Лучший ответ:

0

Наконец-то я нашел ответ, вам просто нужно снова рекламировать сервис после того, как он спит. Сначала вам нужно определить это:

#if CONFIG_PM_ENABLE
// Настроить динамическое масштабирование частоты:
// максимальная и минимальная частоты задаются в sdkconfig,
// автоматический легкий сон включен, если включена поддержка бестактного простоя.
// esp_pm_config_esp32c3_t pm_config = { // старая версия
esp_pm_config_t pm_config = {
        .max_freq_mhz = 160, // например, 80, 160,
        .min_freq_mhz = 80, // 40
#if CONFIG_FREERTOS_USE_TICKLESS_IDLE
        .light_sleep_enable = true
#endif
    };
ESP_ERROR_CHECK( esp_pm_configure(&pm_config) );
#endif // CONFIG_PM_ENABLE

Затем в своем цикле вы можете сделать что-то вроде:

esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
Serial.println("Going to light sleep now");
esp_light_sleep_start();
Serial.println("depois do sleep start");
BLEDevice::startAdvertising();
,