Intervallometro D40 per niubbo

Premetto che non mi sono mai occupato di elettronica e che quindi non sono in grado di risolvere il mio problema da solo…
Il fatto è che vorrei realizzare un time lapse di circa 6 mesi con una nikon D40 che non ha intervallometro nè interno nè esterno.
Il problema principale del mio progetto (oltre alla programmazione di arduino) è l’autonomia.
Sarò spesso in cantiere, ma non per un periodo di 8 giorni nei quali il tutto dovrà funzionare in maniera autonoma appunto.
L’idea di base è realizzare un intervallometro meccanico come quello del link seguente (la prima versione semplificata) che scatti ogni 10 minuti dalle 6 di mattina alle 18 della sera:

Ho già acquistato il materiale ed in negozio non era disponibile un RTC quindi ho scritto (scusate ma non l’avevo mai fatto prima) questo codice:

#include <Servo.h>
Servo myservo;

void setup() 
{
// attach servo to digital pin 6
myservo.attach(6);
}

void loop() 
{
for (int i=0; i <= 71; i++)
 {
 myservo.write(120);        // posizione messa a fuoco
 delay(4000);               // tempo messa a fuoco
 myservo.write(90);         // posizione scatto
 delay(1000);               // tempo scatto
 myservo.write(150);        // posizione riposo
 delay(595000);             // tempo riposo
 }
delay(43200000);             // tempo notturno
}

In questo modo dovrebbe scattare 72 volte ogni 10 minuti per 12 ore ed attendere altre 12 ore.
Ecco i miei problemi:

  1. non essendoci un RTC non posso impostare le 6 di mattina ma potrei fare partire l’arduino alle 18 iniziando dalle 12 notturne oppure inserire swRTC ma non ho idea di come fare per caricare librerie e modificare il codice (credo sia utile anche per i ritardi della funzione delay)

  2. mi è stato detto da leo72 che l’arduino consuma circa 50mA… senza nemmeno contare il servo motore che nel mio caso è un goteck GS-1723 (del quale non trovo i consumi). In pratica con una normale batteria 9V potrei lavorare poche ore, figuriamoci 8-10 giorni. Volevo pertanto disabilitare tutto quello che è alimentato in arduino meno quello che uso (cioè l’uscita 6, l’usb solo per caricare il codice, il timer di arduino e… cos’altro?) e disalimentare anche il servo motore stesso nella fase di riposo. Parallelamente pensavo di mettere una batteria di quelle degli ups da 12V 7.2 Ah

Spero che qualcuno abbia la pazienza e la voglia di darmi una mano, grazie ciao.

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare ( pulsante </> ).
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

solo per arduino:
50mA * 24ore = 1.2A al giorno che sono a 5v 6w al giorno.
una batteria da 12v * 7.2A = 86.4w / 6 = 14.4 giorni.
considera il 50/60% avrai una autonomia di 7/9 giorni.
I consumi si possono ridurre un pelo ma non più di tanto.
Fai così: metti in serie tra alimentazione ed Arduino un multimetro e metti su 10 ampere e leggi quanto consuma "in tiro"

Se vuoi raggiungere i 6mesi senza cambio batteria devi prendere in considerazione i pannelli solari.

@nid69ita
Scusa per gli errori di gioventù spero di aver rimediato…

@vbextreme
Grazie mille! I calcoli per i consumi della batteria li avevo fatti allo stesso modo e quindi ora penso possa andare… Anche se rimane il problema di non tenere alimentato il servo motore se non quando mi serve (durante lo scatto).

Per quanto riguarda il delay, le modifiche del codice e riduzione comunque dei consumi che consigliate?

Fai i calcoli con il consumo di Arduino.
Ma quanto consuma la Nikon D40?

Vedo altamente necessario l' uso di un RTC perché solo in quel modo puoi accendere l' intervallometro in qualsiasi momento. Come fai Tu deve essere acceso in un momneto ben preciso del giorno.

Qualsiasi rivenditore Arduino/Genuino ha piú modelli RTC disponibili.
Non conosco la Nikon D40 , ho Canon ma non ci credo che non abbia un conettore per un scatto a distanza.

Ciao Uwe

Per quanto riguarda la Nikon D40 sono sicuro che non esista un connettore per scatto a distanza (ho fatto una ricerca approfondita anche in negozio specializzato) e se guardi sul sito ufficiale nikon tra gli accessori non c'è. L'unico modo è il telecomando ad infrarosso che però fa aumentare i consumi e che va in off automaticamente al massimo dopo 15 minuti. Sarei quindi costretto a fare scattare la macchina anche la notte.
Per la Nikon D40 ho preso due batterie da 1900 mah ed un battery grip che mi consente di usarle contemporaneamente. Farò dei test per vedere in pratica quanto dura.
Purtroppo a Catania c'è un solo negozio che vende arduino (dal quale proviene quello che ho comprato io) e che non ha l'RTC (su ordinazione e passa almeno una settimana)... io devo iniziare lunedì prossimo con gli scatti.
Rimangono perciò i dubbi principali:

  1. Si possono ridurre i 50 mA di arduino, se si, di quanto e come? (leo72 mi ha detto di guardare micrologio ma non so da dove iniziare... aiuto!)
  2. Esiste un comando per togliere l'alimentazione all'uscita 6, dove ho piazzato il servo motore per poi rimetterla prima dello scatto? Ho notato che rimane sempre alimentato una volta collegato.
  3. La funzione delay mi è stato detto da leo72 non essere precisa... in che modo e di quanto? accumula un ritardo di un minuto la settimana o di ore? Come posso migliorare il codice in tal senso?

Grazie, ciao.

Sí, puoi ridurre i consumi di Arduino non usando Arduino.

Un controller ATmega328 stand alone puó essere messo in sleep e consuma pochissimo. Un Arduino ha altra elettronica che continua a consumare anche se il ATmega328 ße in sleep.

Potresti usarea anche un Arduino mini o PRO mini che é la versione minimale di Arduino.

Ciao Uwe

Forse non riesco a spiegarmi bene. Il sistema che ho è quello allegato in foto. Non ho altro e non ho i tempi di procurarlo perchè il tutto mi serve per lunedì prossimo.
Il problema mio principale è la programmazione, come variare il codice che ho scritto affinchè non consumi troppo e quindi non intacchi troppo la batteria. Avere risposta poi alle domande del mio post precedente sarebbe di grande aiuto, grazie.