Sipy+Pytrack, Deepsleep and power consumption problem



  • I have a Sipy on a pytrack (with the shield on) and a huge power consumption problem
    My 2000maH battery is empty in 48 hours. Which is ridiculous.

    Seems to be a deepsleep problem.
    I can only put the sipy to deepsleep using :

    import machine
    machine.deepsleep(600000)
    

    that works, but it is useless as the pytrack is the one consumming

    I tryed

    from pytrack import Pytrack
    py = Pytrack()
    py.setup_sleep(10)
    py.go_to_sleep()
    

    But the code get stuck after py.setup_sleep(10)
    I have to unplug and replug to get things running again.

    Support asked me to try :

    from deepsleep import DeepSleep
    import deepsleep
    
    ds = DeepSleep()
    
    # get the wake reason and the value of the pins during wake up
    wake_s = ds.get_wake_status()
    print(wake_s)
    
    if wake_s['wake'] == deepsleep.PIN_WAKE:
        print("Pin wake up")
    elif wake_s['wake'] == deepsleep.TIMER_WAKE:
        print("Timer wake up")
    else:  # deepsleep.POWER_ON_WAKE:
        print("Power ON reset")
    
    ds.go_to_sleep(10)  # go to sleep for 10 seconds
    

    But i got a
    IndexError: bytes index out of range
    on the ds.get_wake_status()

    if I go straight to ds.go_to_sleep(10) it get stuck as previously

    I don't know what to do.
    48h of use is not what I had in mind when I've started this project

    Please, help me.



  • @devinv it takes a while for a GPS chip to get a fix. You definitely won’t get a position right after wake up, the chip needs to receive ephemeris data, lock onto satellites, compute a position...

    This has been discussed several times in the forum, search for the relevant topics for details.



  • @jcaron Actually I still have a problem.
    The py.go_to_sleep() does work but on the wake up the gps is not returning anything

    if I do

    py = Pytrack()
    gps = L76GNSS(py, timeout=60)
    coord = gps.coordinates()
    
    machine.deepsleep(10000)
    

    It does work, I get new coordinate very 10 secondes (but the chip is using lots of power cause it is not a full Deepsleep)

    but if I do

    py = Pytrack()
    gps = L76GNSS(py, timeout=60)
    coord = gps.coordinates()
    
    py.setup_sleep(10)
    py.go_to_sleep()
    

    It works only on the first launch.
    Every following 10 secondes, it does wake up but I will get an empty coord

    What is going wrong?



  • @devinv Actually, I thought it did but my card is not responsive and I'm now stuck.
    I get a continuous

    rst:0x7 (TG0WDT_SYS_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0xee
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:DIO, clock div:1
    load:0x3fff8028,len:8
    load:0x3fff8030,len:1728
    load:0x4009fa00,len:0
    load:0x4009fa00,len:14584
    entry 0x400a059c
    Starting theets Jun 8 2016 00:22:57

    and the hard reset (pin 12 on 3V for one second) is not getting me out of it.
    What should I do?



  • @jcaron Great, thanks, because it doesn't work when it is on.



  • @devinv no, if you use a Pytrack or Pysense, you don’t need the Deep Sleep Shield, all three do the same thing in terms of controlling deep sleep.



  • @jcaron Thanks a lot. It does work. If I'm using this Deepsleep function (for pytrack), do I need the shield?



  • @devinv the second one is the right one, but you can’t just type it (or even copy-paste it) on REPL: setup_sleep will start changing the state of the PIC and disable USB before you can enter the next call.

    Put that code in a function and call the function, it’ll work.



Pycom on Twitter