Close

novakkry

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 5 příspěvků - 1. až 5. (celkem z 5)
  • Autor
    Příspěvky
  • odpověď na: Posílání dat do mysql databáze #5288
    novakkry
    Účastník

    Tady je můj kód, kterej jsem poslepoval z nějakejch kódů. Je to zatím asi nejdál, co jsem se dostal. 😀
    Problém je, že proběhne loop, potom se to uspí, probudí, uspí, ale už neprobudí. :/ Možná ten kód je blbost, já nevím…

    #include <DS3232RTC.h>        //http://github.com/JChristensen/DS3232RTC
    #include <Streaming.h>        //http://arduiniana.org/libraries/streaming/
    #include <Time.h>             //https://playground.arduino.cc/Code/Time
    #include <Wire.h>             //https://arduino.cc/en/Reference/Wire
    #include <avr/sleep.h>                                 
    
    #define SQW_PIN 2
    
    void setup(void)
    {
        Serial.begin(115200);
    
        //setSyncProvider() causes the Time library to synchronize with the
        //external RTC by calling RTC.get() every five minutes by default.
        setSyncProvider(RTC.get);
        Serial << "RTC Sync";
        if (timeStatus() != timeSet){
            Serial << " FAIL!";
        }
        Serial << endl;
    
        printDateTime( RTC.get() );
        Serial << " --> Current RTC time." << endl;
    
        //Disable the default square wave of the SQW pin.
        RTC.squareWave(SQWAVE_NONE);
    
        //Attach an interrupt on the falling of the SQW pin.
        //digitalWrite(SQW_PIN, HIGH);    //redundant with the following line
        pinMode(SQW_PIN, INPUT_PULLUP);
        
    
        //Set an alarm at every 20th second of every minute.
        RTC.setAlarm(ALM1_MATCH_SECONDS, 20, 0, 0, 1);    //daydate parameter should be between 1 and 7
        RTC.alarm(ALARM_1);                   //ensure RTC interrupt flag is cleared
        RTC.alarmInterrupt(ALARM_1, true);
    
    }
    
    //volatile boolean alarmIsrWasCalled = false; myslim, ze to nepotrebujeme
    
    void alarmIsr()
    {
        Serial.println("alarmIsr"); //abych zjistil, jestli tahle funce byla zavolana
       // alarmIsrWasCalled = true; myslim, ze to nepotrebujeme
    
    }
    
    void sleepNow() {  
        set_sleep_mode(SLEEP_MODE_PWR_DOWN);    // sleep mode is set here  
        sleep_enable();                         // enables the sleep bit in the mcucr register  
          // use interrupt 0 (pin 2) and run function 
          attachInterrupt(0,alarmIsr, CHANGE);// here the device is actually put to sleep!!   
          sleep_mode(); 
          Serial.println("SleepNow"); //abych zjistil, jestli tahle funce byla zavolana
          
        // THE PROGRAM CONTINUES FROM HERE AFTER WAKING UP  
       
    
      //  sleep_disable();         // first thing after waking from sleep: disable sleep...  
       // detachInterrupt(0);      // disables interrupt 0 on pin 2 so the wakeUpNow code will not be executed during normal running time.  
    }  
    
    int i = 1; //abych zjistil, kolikrat probehl loop
    
    void loop(void)
    {
    // alarmIsrWasCalled = false; myslim, ze to nepotrebujeme
    delay(100);
    Serial.println(i);
    delay(100);
    i++;
    sleepNow();
    }
    
    void printDateTime(time_t t)
    {
        Serial << ((day(t)<10) ? "0" : "") << _DEC(day(t)) << ' ';
        Serial << monthShortStr(month(t)) << " " << _DEC(year(t)) << ' ';
        Serial << ((hour(t)<10) ? "0" : "") << _DEC(hour(t)) << ':';
        Serial << ((minute(t)<10) ? "0" : "") << _DEC(minute(t)) << ':';
        Serial << ((second(t)<10) ? "0" : "") << _DEC(second(t));
    }
    odpověď na: Posílání dat do mysql databáze #5287
    novakkry
    Účastník

    To by bylo žůžo. Díkes! 😀

    odpověď na: Posílání dat do mysql databáze #5285
    novakkry
    Účastník

    Jinak díky moc za objasnění TX a RX. To jsou takový malý věci, který člověk neví, zaberou mi celej den a potom člověk zjistí, že má přehodit jenom dva drátky… 😀

    odpověď na: Posílání dat do mysql databáze #5284
    novakkry
    Účastník

    No já bych nepoužíval arduino na samotné buzení. Postavil bych si bareduino (bez všech regulátorů, ledek a těchto zbytečností) a budil bych ho přes ten rtc ds3231 modul. Ten má na sobě atmel 24c32n a běží na vlastní baterce, takže arduino může spát a mít spotřebu v micro amperech.
    Na internetu jsou k tomu tuny návodů, ale já jsem prostě takový kopyto, že to neumím zprovoznit… 🙁

    odpověď na: Posílání dat do mysql databáze #5278
    novakkry
    Účastník

    Vojto, díky moc za odpověď, nakonec jsem to dal dohromady. :)) Po nastavení na „serial“ a přepojejní na piny 0 a 1 to funguje. Resp. se musí zapojit TX na RX a RX na TX – nevím proč. Promiň, že odepisuju po tak dlouhý době, byl jsem pryč.

    Potřebuju překonat ještě jeden problém, možná trochu větší… Chci, aby arduino tu informaci posílalo jednou za den. Bude poměrně na opuštěném místě, tak potřebuji, aby vydrželo aspoň rok na baterku. Jelikož mi stačí, aby bylo v činnosti max minutu denně, tak by to snad neměl být problém.
    Koupil jsem RTC modul ds3231 a mým cílem je, aby arduino spalo, DS3231 ho v určitý čas probudil, arduino by udělalo měření a poslalo by data na server a zase uslo. Takhle furt dokola. Už se to snažím dva dny zprovoznit a výsledek naprosto žádnej.

    Na této stránce (zhruba v první třetině) pod nadpisem „waking from sleep with signal“ je docela pěkný kód, který bych možná chtěl použít, ale není v něm zaimplementováno DS3231.
    http://gammon.com.au/power

    Tady JChristensen, který napsal knihovnu DS3231.h postoval kód, který má nastaven alarm a interrupt na určitý čas. Zprovoznil jsem ho, ale nemá v sobě „sleep“ funkci a za boha jí tam neumím dodat.
    https://github.com/JChristensen/DS3232RTC/issues/5

    Už se o to snažím dva dny a výsledek pořád žádnej, jsem z toho už fakt zoufalej… :/
    Jde mi opravdu jenom o to, aby arduino spalo a v určitej čas ho ds3231 probudilo a arduino udělalo nějakou úlohu a zase uslo. Podle všeho, co jsem se dočetl na netu, by to mělo bejt fakt jednoduchý, ale prostě já nejsem schopnej to zprovoznit.

    Kdyby mi někdo pomohl, byl bych opravdu neskutečně vděčnej.

    Díky moc

    Kryštof

Aktuálně je na stránce zobrazeno 5 příspěvků - 1. až 5. (celkem z 5)