Metodi per sleep controllato da RCT

Buongiorno ragazzi!
Sto lavorando ad un progettino per rendere arduino 'quasi' indipendente dalla presa elettrica ma totalmente sostenuto da batterie a litio e modulo di ricarica con pannello solare. ovviamente il mio intento è di rendere il tutto più performante, quindi dato che le operazioni da compiere sono solo 2 al giorno ho intenzione di metterlo in off il restante tempo. Ho pensato di sfruttare un RCT esterno sia per temporizzare le 2 operazioni sia a questo punto per 'accendere/spegnere' il microcontrollore. Il problema è questo, come faccio ad utilizzare la libreria: https://www.rocketscream.com/blog/2011/07/04/lightweight-low-power-arduino-library/ ed utilizzare al posto del WD il timer del rtc ? nella descrizione della libreria mi sembra una cosa plausibile ma non affrontata a causa della sua specificità...chiedo consiglio ai più esperti.
Chiedo inoltre un consiglio, dato che ci sono, per ottimizzare ancora le performances: fondamentalmente l'arduino deve controllare un servo per circa 1000ms al giorno, ma credo che il servo 'assorba' anche se spento (da verificare con il tester), se alimentassi a comando il vcc del servo attraverso un pin analogico potrei evitare sprechi? che ne dite?

Se apri il link al repository della libreia c'è l'esempio che fa per te:

powerDownWakeExternalInterrupt.ino

Usando un RTC come il DS3231 che ti da la possibilità di configurare fino a 2 allarmi ed associarne lo stato al pint INT/SQW che quindi andrà a "risvegliare" il micro dal deep sleep, dovresti ottenere quello che desideri.

Per quanto riguarda il servo, sarebbe sufficiente fare un detach prima di andare in sleep per togliere potenza al motore. L'elettronica però rimarrebbe alimentata lo stesso, quindi la soluzione migliore è spegnerlo del tutto usando un transistor come interruttore (un pin analogico o digitale che sia, non è in grado di fornire tutta la corrente necessaria al servo. Danneggeresti il microcontrollore).

1 Like