Page 1 of 1

Is it possible to set the threshold for external wake up?

Posted: Fri Feb 08, 2019 7:19 pm
by Thomas1
I'm having a chip that sleeps after a few seconds of inactivity and can be woken up by a GPIO that is connected to microphone. The relevant code is here. The wakeup is set to trigger on the GPIO being high.

Code: Select all

#define SLEEPTIMEOUT 3000

int lastActive;

void setup(void)
{
  lastActive = millis();
}
void loop()
{

  if (millis() - lastActive > SLEEPTIMEOUT)
  {

    uint64_t ext_wakeup_pin_1_mask = 0;
    ext_wakeup_pin_1_mask |= (1ULL << WAKEUPPIN);
    esp_sleep_enable_ext1_wakeup(ext_wakeup_pin_1_mask, ESP_EXT1_WAKEUP_ANY_HIGH);

    esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON);

    wasAsleep = true;

    esp_light_sleep_start();

    delay(500);
  }
}

The problem is, this causes a lot of "false positives" wakeups to appear. The device for example keeps waking up constantly when in a room with lots of people talking or when put in one's pocket. The desired behaviour is that the waking up takes place only if the noise is high enough (the GPIO reading is high enough).

Is it possible to set a threshold so that the device only wakes up if the reading on the GPIO pin is above a certain level?

Thanks.

Re: Is it possible to set the threshold for external wake up?

Posted: Sat Feb 09, 2019 11:10 am
by ESP_Sprite
No, there is not. Suggest you use an external solution for this. You should be able to implement it using something like a simple RC network to filter out the spikes.

Re: Is it possible to set the threshold for external wake up?

Posted: Tue Feb 12, 2019 4:18 pm
by Thomas1
ESP_Sprite wrote:
Sat Feb 09, 2019 11:10 am
No, there is not. Suggest you use an external solution for this. You should be able to implement it using something like a simple RC network to filter out the spikes.
Could you please give more details on how such a RC circuit would work? We are not trying to filter out frequencies, we want to filter out pin voltage readings below a certain threshold.

Re: Is it possible to set the threshold for external wake up?

Posted: Wed Feb 13, 2019 3:19 am
by ESP_Sprite
It really depends on how your current setup works. If you're feeding the AC signal directly into the GPIO and just want to raise the minimum wake-up level, an external comparator or even a simple 2-resistor attenuator may do the job. If you go the more nuanced way of actually detecting sound levels, you probably already have a rectifier and a peak detector in place. If so, a RC filter means you'd need either a more sustained sound or a higher sound level to trigger the wake-up.