Ciao.
Sto sviluppando un sistema di fertilizzazione automatica: una volta al giorno una pompa si attiva per alcuni secondi.
Utilizzo un trimmer per impostare i secondi.
Il sistema è outdoor ed utilizza un Arduino pro mini 3v3 (in futuro un ATtiny) e una batteria lipo.
Il sistema deve essere low power quindi.
Quindi pensavo di utilizzare lo sleep mode installando l'opportuna libreria.
La mia domanda è: -a livello di codice..come faccio a dirgli ad Arduino di svegliarsi una volta al giorno e di eseguire il codice per attivare la pompa?
NOTA: NON voglio utilizzare un chip RCT, per motivi di spazio, ed un certo errore sul time counting tollerato.
squizzy91:
NOTA: NON voglio utilizzare un chip RCT, per motivi di spazio, ed un certo errore sul time counting tollerato.
... il certo errore dopo qualche giorno è di minuti e dopo qualche settimana può arrivare a decine di minuti e così via ... vedi te.
Per applicazioni che funzionano per giorni/settimane/mesi un RTC è praticamente d'obbligo, indipendentemente da come svegli la MCU e le dimensioni sono estremamente piccole (meno di un Arduino Pro Mini).
gpb01:
... il certo errore dopo qualche giorno è di minuti e dopo qualche settimana può arrivare a decine di minuti e così via ... vedi te.
Per applicazioni che funzionano per giorni/settimane/mesi un RTC è praticamente d'obbligo, indipendentemente da come svegli la MCU e le dimensioni sono estremamente piccole (meno di un Arduino Pro Mini).
Guglielmo
Come si calcola l'errore?
intendo utilizzare un watchdog a 8 secondi come timer
Come ti ha già detto Patrick_M ... NON si calcola e, se magari per l'oscillatore primario si può stimare guardando la precisione del quarzo (nelle schede dove è presente) o del risuonatore ceramico (es. Arduino UNO), per il WatchDog la precisione è nettamente peggiore dato che utilizza l'oscillatore interno a 128 KHz ...
Mettiti l'anima in pace, se ti serve un minimo di precisione e devi funzionare per giorni/settimane/mesi ... NON puoi fare a meno di un modulo RTC (... ti consiglio un DS3231).
.... è un modulo per Raspberry PI (che lavora a 3.3V) e quindi NON credo vada bene per Arduino a 5V dato che NON ha a bordo ciò che serve per adattare i livelli e l'alimentazione. Inoltre NON vedo la documentazione del pinout ... :
Patrick_M:
altrimenti fai prima a prenderti una presa tipo queste
tra l'altro adesso le fanno anche wifi con l'app per smartphone che ti permette di programmare accensioni e spegnimenti anche da remoto. ne trovi a decine su amazon. funzionano e sono abbastanza affidabili.
costando da 11 a 15 euro non so veramente se abbia senso (se non per puro interesse personale) prendere altre schede di espansione.
Poi d'inverno le usi per le luci dell'albero di natale
squizzy91:
Ciao.
Sto sviluppando un sistema di fertilizzazione automatica: una volta al giorno una pompa si attiva per alcuni secondi.
Utilizzo un trimmer per impostare i secondi.
Il sistema è outdoor ed utilizza un Arduino pro mini 3v3 (in futuro un ATtiny) e una batteria lipo.
Il sistema deve essere low power quindi.
Quindi pensavo di utilizzare lo sleep mode installando l'opportuna libreria.
La mia domanda è: -a livello di codice..come faccio a dirgli ad Arduino di svegliarsi una volta al giorno e di eseguire il codice per attivare la pompa?
NOTA: NON voglio utilizzare un chip RCT, per motivi di spazio, ed un certo errore sul time counting tollerato.
sai.... ci sono gli imprevisti "previsti" tipo manca un attimo la corrente, si resetta il micro etc,
quindi deve esserci un qualcosa che ti fa capire da quanto tempo è passato dall'ultima innaffiata
ed anche altre "cosette"
si ma per il mio progetto non mi preme la cognizione del tempo
Se l'acqua un giorno non arriva oppure ogni giorno mi arriva ad un orario diverso cosa mi dovrebbe cambiare?
Dato che ne devo costruire 45 volevo evitare di aggiungere un qualcosa di evitabile.
Se NON ti interessa affatto la precisione, se ti va bene perdere completamente la cognizione del tempo, se ti va bene annaffiare "CIRCA" ogni tot tempo ... allora puoi evitare il RTC.
Usi l'interrupt generato dal WatchDog e ti svegli ogni 8 secondi (tempo massimo del WD), incrementi un contatore, guardi se è arrivato al valore voluto (in funzione del tempo che ti interessa sia passato) e, se sei arrivato al valore giusto, azzeri il contatore, fai quello che devi fare e ti rimetti in sleep, altrimenti ... ti rimetti direttamente in sleep.
gpb01:
Se NON ti interessa affatto la precisione, se ti va bene perdere completamente la cognizione del tempo, se ti va bene annaffiare "CIRCA" ogni tot tempo ... allora puoi evitare il RTC.
Usi l'interrupt generato dal WatchDog e ti svegli ogni 8 secondi (tempo massimo del WD), incrementi un contatore, guardi se è arrivato al valore voluto (in funzione del tempo che ti interessa sia passato) e, se sei arrivato al valore giusto, azzeri il contatore, fai quello che devi fare e ti rimetti in sleep, altrimenti ... ti rimetti direttamente in sleep.
Guglielmo
Yep!
Userò questa tecnica. Non mi interessa, sebbene auspicabile, a che ora partirà il fertilizzatore.
Mi interessa che parla una volta al giorno.
Questo era il succo.
Ovvio che se lunedì la pompa parte alle 13 e mercoledì mi parte alle 15 un'attimo ci penso.
... tra lunedì e mercoledì magari c'è già una differenza di qualche decina di minuti :
Il WD NON usa il risuonatore ceramico (o l'eventuale quarzo), ma usa un suo oscillatore interno a bassa frequenza (128 KHz) che ... NON è certo il massimo della precisione.