Pytrack and Gpy in deepsleep waking on gpio
Can anyone can give me a good start on putting the Pytrack/Gpy combo in deepsleep and waking up from a gpio and returning to sleep?
I want to use it as a flow detector where a simple float (switch) can be use as waking the module up and sending some ON/OFF status and return to sleep. I already have code to send messages on gpio triggering:
from network import LTE from machine import Pin from umqtt import MQTTClient import machine import time is_pressed = False button = Pin("P10", mode=Pin.IN, pull=Pin.PULL_UP) def settimeout(duration): pass lte = LTE() # Modem does not connect successfully without first being reset. print("Resetting LTE modem ... ", end='') lte.send_at_cmd('AT^RESET') print("OK") time.sleep(1) print("Configuring LTE ", end='') lte.send_at_cmd('AT+CGDCONT=1,"IP","yourAPN"') print(".", end='') lte.send_at_cmd('AT!="RRC::addscanfreq band=2, 4, 5 dl-earfcn=9410"') print(".", end='') lte.send_at_cmd('AT+CFUN=1') print(" OK") if not lte.isattached(): print("Attaching to LTE network ", end='') lte.attach() while(True): if lte.isattached(): print(" OK") break print('.', end='') time.sleep(1) # Once attached, connect() should succeed. if not lte.isconnected(): print("Connecting on LTE network ", end='') lte.connect() while(True): if lte.isconnected(): print(" OK") break print('.', end='') time.sleep(1) lte.connect() while not lte.isconnected(): machine.idle() print("Connected to LTE\n") #wlan = WLAN(mode=WLAN.STA) #wlan.antenna(WLAN.EXT_ANT) #wlan.connect("yourwifi", auth=(WLAN.WPA2, "yourpass"), timeout=5000) #while not wlan.isconnected(): #print("Connected to Wifi\n") client = MQTTClient("joe", "yourMQTTbroker", port=1883) client.settimeout = settimeout client.connect() while True: if button() == 1 and not is_pressed: time.sleep(1) elif button() == 0 and not is_pressed: print("Button pressed") print("Sending ON") client.publish("/gpy", "ON") is_pressed = True time.sleep(1) elif button() == 1 and is_pressed: print("Button released") print("Sending OFF") client.publish("/gpy", "OFF") is_pressed = False time.sleep(1) else: pass
I'm having the same problem right now. From what I've figured out so far, there's an interrupt on P#9 which can be configured through the
py.setup_int_pin_wake_up(False)method. I haven't gotten it working so far, though. I have also created another topic asking a similar thing.
Alternatively, you can sleep through the machine.deepsleep method and configure any GPIO as wakeup pin for that. YMMV though, as I am experiencing extremely high sleep current with the machine deepsleep.