ESP32 EXT1 唤醒

ESP32 EXT1 wakeup

我有一个连接到 3 x 4 矩阵键盘的 ESP32 开发套件。

3 列连接到 PINS:12、13、27

4 行连接到 PINS:14、15、32、33

目标:我希望能够将 MCU 置于深度睡眠模式并能够通过按键将其唤醒,这意味着任何按键,而不是特定的按键。

我整理了这段代码

void setup()
{
  Serial.begin(115200);
  // Wait for serial.
  while (!Serial)
    delay(100);
  Serial.println("I am ON");
  // power all columns.
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  pinMode(27, OUTPUT);
  // enable all rows as input (HIGH).
  pinMode(14, INPUT_PULLDOWN);
  pinMode(15, INPUT_PULLDOWN); // tried also pin 35, no luck.
  pinMode(32, INPUT_PULLDOWN);
  pinMode(33, INPUT_PULLDOWN);
  esp_sleep_enable_ext1_wakeup(0b001100000000000000001100000000000000, ESP_EXT1_WAKEUP_ANY_HIGH);
  // hold the pin HIGH during sleep.
  gpio_deep_sleep_hold_en();

  // do the actual output on the pins.
  digitalWrite(12, HIGH);
  digitalWrite(13, HIGH);
  digitalWrite(27, HIGH);

  // delay to make sure.
  delay(500);
  esp_deep_sleep_start();
}

问题似乎是整个设置不稳定。有些按键比其他按键更一致。但更一致仍然意味着有时更一致的密钥将无法唤醒设备。

我用 2 个不同的板(Huzzah32 和通用开发工具包)尝试了该代码段,结果相同。

键盘设置工作得很好,这意味着我能够可靠地读取按键。

啊,找到了:https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/sleep_modes.html#external-wakeup-ext1 pull-up/down 电阻在深度睡眠期间通常不会启用,这似乎可以解释不一致。