Page 1 of 1

probleme sur I2C avec picosleep

Posted: Thu 4 Jul 2024 17:45
by ewok2
Bonjour
Je tente de faire marcher un Pico avec un prog micropython.
L'objectif avoir un Pico qui est alimenté par un petit paneau solaire (qui n'a pas beaucoup de soleil) qui :
- recupere température, humidité => Capteur DHT22
- tension de la baterie => INA219 en I2C
- alimente une pompe de temps en temps => Action sur un Transistor
- pousse en Wifi vers un serveur les parametre
=> Es se rendore en essayant de consomer le moins possible

Actuellement cela fonctionne bien si entre chaque boucle j'utilise la fonction "time.sleep(x)"
Par contre quand je tente d'utiliser une fonction qui met en "sommeil" plus profond comme "picosleep.seconds(x) tout marche sauf le capteur I2C (INA219)

J'ai vraiment le même code qui en fonction d'un interrupteur ouvert ou fermé active time.sleep ou picosleep
Une idée pourquoi l'I2C pourrait ne pas marcher?

PS : le pb c'est que le picosleep fait "sauter" la fenetre terminal de thony donc je sais pas comment debugger

Re: probleme sur I2C avec picosleep

Posted: Sat 6 Jul 2024 14:27
by ewok2
A priori j'ai trouvé un moyen pour que cela fonctionne
C'est comme ci vu le l'INA219 un pico sleep faisait comme une coupure d'alimentation.
Il faut redeclarer les variables a chaque boucles...
Je vais tenter de voir que partie doit etre redéclaré et quel partie reste en memoire apres le picosleep...

Re: probleme sur I2C avec picosleep

Posted: Fri 12 Jul 2024 23:57
by Dominique
Bonjour,
Je vois à l'instant votre sujet... C'est vraiment très intéressant.

Pour référence: voir l'article Deep sleeping the Raspberry Pico with MicroPython (AKA PicoSleep).

J'ai consulté la DataSheet du RP2040 et je n'ai pas trouvé de relation évidente entre le DeepSleep et le bus I2C!

As-tu essayé de faire un I2C.scan() après le réveil ?
Appeler l'I2C.init() permettrait aussi de réinitialiser le bus... ce qui pourrait être nécessaire après un deepsleep.

Bonne nuit,
Dominique