When the esp32 is awake I can make pin 21 go high of low as I wish. When the esp32 is in deep sleep mode I get a random voltage on the pin which is often enough to turn the opto isolator on.
How do I make pin 21 low or floating when the esp32 is in deep sleep?
The following is an example app. The code is from the web but doesn't seem to make any difference to the output. I have also tried to make the pin input only but this made no difference. The 10k resistor is to pull the pin low when it is floating or when it is an input.
I'm new to this and I'm missing something obvious. Any advice will be appreciated.
#include <Arduino.h>
#include <WiFi.h>
#include <driver/rtc_io.h>
void setup()
{
pinMode(GPIO_NUM_21, OUTPUT);
digitalWrite(GPIO_NUM_21, HIGH); // Pin at 3.3v
vTaskDelay(pdMS_TO_TICKS(5 * 1000));
digitalWrite(GPIO_NUM_21, LOW); // Pin at 0v
vTaskDelay(pdMS_TO_TICKS(5 * 1000));
//
rtc_gpio_init(GPIO_NUM_21);
rtc_gpio_set_direction(GPIO_NUM_21, RTC_GPIO_MODE_OUTPUT_ONLY);
rtc_gpio_hold_dis(GPIO_NUM_21);
rtc_gpio_set_level(GPIO_NUM_21, LOW);
rtc_gpio_hold_en(GPIO_NUM_21);
//
esp_sleep_enable_timer_wakeup(5 * 1000000);
esp_deep_sleep_start(); // Pin 21 voltage varies randomly between .7v and 2.5v
}
void loop()
{
}
/* RTC code from:
https://electronics.stackexchange.com/q ... e-too-weak
*/