Stránka 1 z 1

Poptávám program na probuzení ESP32 pomoci RTC hodin

Napsal: 01 kvě 2020, 14:13
od nem0035
Dobrý den,

dělám projekt a potřebuji naprogramovat ESP32, aby se mi např. co 8 nebo 12 hodin probudilo provedlo dané měření a zase se uspalo.

Představu mám takovou, že by se naprogramovala buď hybernace a nebo deep sleep, probuzení by bylo pomoci RTC hodin DS3231 za pomoci SQW na hodinách. Kde by se vyslal signál na interrupt ESP a restartoval by jej.

Kdyby se chtěl toho někdo ujat tak napište přímo na můj email a domluvíme se nějak.

nemec0035@gmail.com

Re: Poptávám program na probuzení ESP32 pomoci RTC hodin

Napsal: 01 kvě 2020, 22:34
od bcsedlon
esp muze probudit samo sebe, proc externi obvod?

Re: Poptávám program na probuzení ESP32 pomoci RTC hodin

Napsal: 02 kvě 2020, 12:10
od pavel1tu
bcsedlon píše:
01 kvě 2020, 22:34
esp muze probudit samo sebe, proc externi obvod?
Za 8 hodin ? A jak to v kodu uděláte ?
Je to efektivnější na spotřebovanou energii, pokud jedem z baterek, já tedy řeším jen Arduino,ale prostě nastavím "buzení", zahybernuji vše mimo probouzení po bin.vstupu, po hodině probudím a tak dokola - šetří se drahocené mAh.

Re: Poptávám program na probuzení ESP32 pomoci RTC hodin

Napsal: 03 kvě 2020, 15:35
od bcsedlon

Kód: Vybrat vše

#include "esp_sleep.h"

#define DEEP_SLEEP_COUNT    3   // x * DEEP_SLEEP_DURATION

#define DEEP_SLEEP_DURATION 10  // sleep x seconds and then wake up
RTC_DATA_ATTR static uint32_t bootcount = DEEP_SLEEP_COUNT; // remember number of boots in RTC Memory

void sleep() {
  Serial.printf("enter deep sleep\n");
  esp_deep_sleep(1000000LL * DEEP_SLEEP_DURATION);
  Serial.printf("never run\n");
}

void setup() {
  bootcount++;

  Serial.begin(115200);
  Serial.printf("start ESP32 %d\n",bootcount);
  if(bootcount < DEEP_SLEEP_COUNT) {
    sleep();
  }
  bootcount = 0;

  Serial.printf("user setup\n");
}

void loop() {

  Serial.printf("user sleep\n");
  sleep();
}

Re: Poptávám program na probuzení ESP32 pomoci RTC hodin

Napsal: 03 kvě 2020, 17:23
od pavel1tu
bcsedlon píše:
03 kvě 2020, 15:35
Hmm, bezva, kod - funkční na časy 8 a 12 h ?
Já četl že maximum je asi
…the maximum value for a 32-bit unsigned integer is 4294967295 or 0xffffffff. Hence, the max deep sleep interval appears to be ~71 minutes.
To už neplatí ? Byl bych rád kdyby ne.
Ještě by se dalo použít knihovny ESP.deepSleepMax(), ale když jsem ji testoval na půjčeném ESP dost blbla.

Řekl bych že použití s RTC je perfektní, sám jsem to použil na Arduinu, kde je SLEEP max. 30s myslím ... a potřeboval jsem čas 1h

Re: Poptávám program na probuzení ESP32 pomoci RTC hodin

Napsal: 03 kvě 2020, 18:15
od bcsedlon
pocet sekund spanku
#define DEEP_SLEEP_DURATION 10

pocet opakovani spanku
#define DEEP_SLEEP_COUNT 3

esp se po DEEP_SLEEP_DURATION na okamzik probudi a opet usne, dokud nedoahne DEEP_SLEEP_COUNT opakovani

priklad 8 hodin
#define DEEP_SLEEP_DURATION 3600
#define DEEP_SLEEP_COUNT 8