Не удается отправить Wemos D1 ESP8266 в глубокий сон

У меня есть Wemos D1 (версия 2015-08), и я пытаюсь заставить его заснуть. Мне удалось запустить его в целом и запустить / подключить Wi-Fi к работе и т.д., Но функция глубокого сна мне недоступна.

Я попробовал подключить вывод RX <-D0 для СБРОСА, также попробовал с резистором 10 ком. Ни то, ни другое не сработало. Затем я попробовал сбросить D2 (указан как gpi016 на задней панели платы), но это также не сработало. Есть какие-нибудь идеи? Похоже, это был бы невероятный чип, если бы я мог заставить его заснуть. Приведенный ниже примерный скетч загружается нормально и связывается с последовательным монитором до тех пор, пока он не перейдет в спящий режим.

 /* Глубокий сон - Моргание
 *
 * Мигает встроенный светодиод, переходит в режим ожидания на 10 секунд и повторяет
 *
 * Соединения:
 * D0 - ПЕРВЫЙ
 *
 * Если вы не можете перепрограммировать, поскольку ESP находится в спящем режиме, сначала отключите D0 и повторите попытку
 */

// sleep в течение этого количества секунд
const int sleepSeconds = 5;

void setup() {
  Serial.begin(9600);
  Serial.println("\n\nWake up");
  pinMode(BUILTIN_LED, OUTPUT);
  // Подключите D0 к RST для пробуждения
  pinMode(D0, WAKEUP_PULLUP);
  // СВЕТОДИОД: НИЗКИЙ = включен, ВЫСОКИЙ = выключен
  Serial.println("Start blinking");
  for (int i = 0; i < 20; i++) {
    digitalWrite(BUILTIN_LED, LOW);
    delay(100);
    digitalWrite(BUILTIN_LED, HIGH);
    delay(100);
  }
  Serial.println("Stop blinking");
  Serial.printf("Sleep for %d seconds\n\n", sleepSeconds);
  // преобразовать в микросекунды
  ESP.deepSleep(sleepSeconds * 1000000);
  Serial.println("sleep finished");
}

void loop() {
}

, 👍3

Обсуждение

Не могли бы вы сказать еще несколько слов о том, что вы * на самом деле * наблюдали, что вы * ожидали * наблюдать, и чем они отличаются? Вы пробовали отсоединить все от последовательного порта ESP8266, как это было предложено в [одном руководстве] (https://learn.sparkfun.com/tutorials/esp8266-thing-hookup-guide/using-the-arduino-addon )? (Увы, это значительно усложняет отладку)., @David Cary

определенно вы используете gpio16 (D2), так как это вывод, который используется для пробуждения от глубокого сна... примечание Serial.println ("режим сна завершен"); не будет выполняться после пробуждения чипа, ESP в основном выключится, а затем * перезагрузится * после периода глубокого сна..., @Jaromanda X

о, GPIO16 - это D0 на weemos d1 mini и D2 на "не" mini...почему они не могут просто обозначить GPIO16 как GPIO16!!!, @Jaromanda X

Один вопрос о вашей плате, какую плату вы должны выбрать для Wemos 2015-08 под arduino 1.8.5?? Wemos D1 R1 или Wemos D1 R2/mini???, @Miguel Angel Salinas Gancedo

Если вам нужен глубокий сон, вам не следует использовать платы с микросхемами USB-to-serial, которые нельзя перевести в спящий режим. Подумайте об использовании "голого" ESP-12f и внешнего USB UART, который будет подключаться только для программирования., @gone


2 ответа


3

Мне пришлось физически подключить D0 к RST, чтобы разбудить wemos.

,

путаница может заключаться в том , что ... D0 на Weemos d1 ** mini ** равен gpio16... D2 на Weemos d1 равен gpio16, @Jaromanda X

Добро пожаловать. Пожалуйста, обязательно посетите экскурсию по адресу https://arduino.stackexchange.com/Tour, @SDsolar


1

На самом деле он хорошо работает, используя провод между выводами D2 и RESET. Но отправляя программу на плату, вы должны сначала отсоединить эти контакты (arduino IDE отправит жесткий сброс во время процесса, поэтому этот сброс D2 не должен быть на месте). Когда программа загружается в ESP и начинает работать, вы подключаете D2 и СБРАСЫВАЕТЕ, и она работает хорошо, ESP перейдет в режим глубокого сна, как и ожидалось.

Поскольку это не mini, на плате есть другой чип (usb), который не переходит в спящий режим, поэтому на моей плате он будет использовать около 17 мА в режиме глубокого сна (сравните с 80 мА при нормальной работе Wi-Fi). И все же трюк того стоит.

,