← index #3834Issue #4060
Off-topic · high · value 3.000
QUERY · ISSUE

pyboard - deepsleep wake pins

openby diginfoopened 2018-06-02updated 2019-04-18
port-stm32

I have just switched to pyboard for a project which has been on the esp32 and I need to be able to wake from deep sleep by either time or a pin edge.

https://github.com/micropython/micropython/blob/master/docs/library/machine.Pin.rst
https://docs.micropython.org/en/latest/pyboard/library/machine.Pin.html

These pages indicate that the syntax for enabling a wake-up pin is:

import machine as mc
door = mc.Pin('X1',mc.Pin.IN)
door.irq(handler=None, trigger=(mc.Pin.IRQ_FALLING | mc.Pin.IRQ_RISING),wake=mc.DEEPSLEEP)

However this results in an error:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'DEEPSLEEP'

What's the solution ?

CANDIDATE · ISSUE

ESP32 module wake on touch, wake on ext1

openby tahouseopened 2018-08-17updated 2019-05-28
port-esp32

Hi there,

I'm running MicroPython v1.9.4-409-g434975def and have successfully used a Pin irq to wake from deep sleep and can confirm the wake reason:

import machine
from machine import Pin, TouchPad, deepsleep
import time

wake = Pin(14, mode = Pin.IN, pull = Pin.PULL_DOWN)
wake.irq(trigger=Pin.WAKE_HIGH, wake = machine.DEEPSLEEP)

time.sleep(5)
deepsleep(5*1000)

after bringing Pin 14 line up to 3V3

Reset cause:  DEEPSLEEP_RESET
Wake reason:  PIN_WAKE/EXT0_WAKE

Now I'm trying to do the same but with a TouchPad input:


from machine import Pin, TouchPad, deepsleep
import time
import esp32

wake = Pin(14, mode = Pin.IN)
touch = TouchPad(wake)
touch.config(500)
esp32.wake_on_touch(True)

time.sleep(5)
deepsleep(5*1000)

(after 5 seconds and touching/untouching wire to Pin 14)

Reset cause:  DEEPSLEEP_RESET
Wake reason:  TIMER_WAKE

The range of my touch.read() values are around 700 when untouched, and down to around 100 when touched. I've tried adjusting the touch.config to various settings but I cannot get my ESP32 to wake from touch.. only from timer in this mode.

Lastly,
I've tried using wake_on_ext1

import machine
from machine import Pin, TouchPad
import time
import esp32
wake = Pin(14, mode = Pin.IN, pull = Pin.PULL_DOWN)
esp32.wake_on_ext1(pins = [wake], level = Pin.WAKE_HIGH)

time.sleep(5)
deepsleep(5*1000)

But this resets immediately regardless of whether I bring Pin 14 high or not (not in touch mode, mind you).

Reset cause:  DEEPSLEEP_RESET
Wake reason:  EXT1_WAKE

I've browsed through the esp32 module code, but I'm not sure if any of the wake modes work?

Any ideas?

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied